Skip to content

Commit

Permalink
Implement paging offset in the plugin api #75
Browse files Browse the repository at this point in the history
  • Loading branch information
marc0l92 committed May 30, 2023
1 parent 6d2064b commit 55241fc
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 25 deletions.
6 changes: 3 additions & 3 deletions docs-gen/docs/api/api-base.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Retrieve all details related to an issue based on the key. Use the parameter `op
Return value type: [`Promise<IJiraIssue>`](https://github.com/marc0l92/obsidian-jira-issue/blob/master/src/interfaces/issueInterfaces.ts#L3-L79)

## getSearchResults
- `$ji.base.getSearchResults(query: string, options: { limit?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`
- `$ji.base.getSearchResults(query: string, options: { limit?: number, offset?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`

Execute a JQL query to get all the matching issues.

Expand Down Expand Up @@ -50,7 +50,7 @@ To check your the list of Authorized Application go to [`Profile > Tools > View
Return value type: [`Promise<IJiraDevStatus>`](https://github.com/marc0l92/obsidian-jira-issue/blob/master/src/interfaces/issueInterfaces.ts#L163-L202)

## getBoards
- `$ji.base.getBoards(projectKeyOrId: string, options: { limit?: number, account?: IJiraIssueAccountSettings } = {})`
- `$ji.base.getBoards(projectKeyOrId: string, options: { limit?: number, offset?: number, account?: IJiraIssueAccountSettings } = {})`

Retrieve list of boards associated to a project.

Expand All @@ -63,7 +63,7 @@ Retrieve list of boards associated to a project.
Return value type: [`Promise<IJiraBoard[]>`](https://github.com/marc0l92/obsidian-jira-issue/blob/master/src/interfaces/issueInterfaces.ts#L204-L208)

## getSprints
- `$ji.base.getSprints(boardId: number, options: { limit?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {})`
- `$ji.base.getSprints(boardId: number, options: { limit?: number, offset?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {})`

Retrieve list of sprints associated to a board.

Expand Down
2 changes: 1 addition & 1 deletion docs-gen/docs/api/api-defaulted.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ The responses are cached in order to reduce the network load. You can clean the
Read [$ji.base.getIssue](/docs/api/api-base#getIssue)

## getSearchResults
- `$ji.defaulted.getSearchResults(query: string, options: { limit?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`
- `$ji.defaulted.getSearchResults(query: string, options: { limit?: number, offset?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`

Read [$ji.base.getSearchResults](/docs/api/api-base#getSearchResults)
8 changes: 4 additions & 4 deletions docs-gen/docs/api/api-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ This category contains all the functions to directly access the Jira API.
The responses are cached in order to reduce the network load.

- [`$ji.base.getIssue(issueKey: string, options: { fields?: string[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getIssue)
- [`$ji.base.getSearchResults(query: string, options: { limit?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getSearchResults)
- [`$ji.base.getSearchResults(query: string, options: { limit?: number, offset?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getSearchResults)
- [`$ji.base.getDevStatus(issueId: string, options: { account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getDevStatus)
- [`$ji.base.getBoards(projectKeyOrId: string, options: { limit?: number, account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getBoards)
- [`$ji.base.getBoards(projectKeyOrId: string, options: { limit?: number, offset?: number, account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getBoards)
- [`$ji.base.getSprint(sprintId: number, options: { account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getSprint)
- [`$ji.base.getSprints(boardId: number, options: { limit?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getSprints)
- [`$ji.base.getSprints(boardId: number, options: { limit?: number, offset?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-base#getSprints)
- [`$ji.base.getLoggedUser(account: IJiraIssueAccountSettings = null)`](/docs/api/api-base#getLoggedUser)

### API Category - [Defaulted](/docs/api/api-defaulted)
Expand All @@ -47,7 +47,7 @@ The responses are cached in order to reduce the network load.


- [`$ji.defaulted.getIssue(issueKey: string, options: { fields?: string[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-defaulted#getIssue)
- [`$ji.defaulted.getSearchResults(query: string, options: { limit?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-defaulted#getSearchResults)
- [`$ji.defaulted.getSearchResults(query: string, options: { limit?: number, offset?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {})`](/docs/api/api-defaulted#getSearchResults)

### API Category - [Macro](/docs/api/api-macro)

Expand Down
6 changes: 3 additions & 3 deletions src/api/apiBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,23 @@ export async function getIssue(issueKey: string, options: { fields?: string[], a
return cacheWrapper(JiraClient.getIssue)(issueKey, options)
}

export async function getSearchResults(query: string, options: { limit?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSearchResults> {
export async function getSearchResults(query: string, options: { limit?: number, offset?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSearchResults> {
return cacheWrapper(JiraClient.getSearchResults)(query, options)
}

export async function getDevStatus(issueId: string, options: { account?: IJiraIssueAccountSettings } = {}): Promise<IJiraDevStatus> {
return cacheWrapper(JiraClient.getDevStatus)(issueId, options)
}

export async function getBoards(projectKeyOrId: string, options: { limit?: number, account?: IJiraIssueAccountSettings } = {}): Promise<IJiraBoard[]> {
export async function getBoards(projectKeyOrId: string, options: { limit?: number, offset?: number, account?: IJiraIssueAccountSettings } = {}): Promise<IJiraBoard[]> {
return cacheWrapper(JiraClient.getBoards)(projectKeyOrId, options)
}

export async function getSprint(sprintId: number, options: { account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSprint> {
return cacheWrapper(JiraClient.getSprint)(sprintId, options)
}

export async function getSprints(boardId: number, options: { limit?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSprint[]> {
export async function getSprints(boardId: number, options: { limit?: number, offset?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSprint[]> {
return cacheWrapper(JiraClient.getSprints)(boardId, options)
}

Expand Down
33 changes: 19 additions & 14 deletions src/client/jiraClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ export default {
async getIssue(issueKey: string, options: { fields?: string[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraIssue> {
const opt = {
fields: options.fields || [],
account: options.account || null
account: options.account || null,
}
const queryParameters = new URLSearchParams({
fields: opt.fields.join(','),
Expand All @@ -188,17 +188,18 @@ export default {
return issue
},

async getSearchResults(query: string, options: { limit?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSearchResults> {
async getSearchResults(query: string, options: { limit?: number, offset?: number, fields?: string[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSearchResults> {
const opt = {
limit: options.limit || 50,
fields: options.fields || [],
account: options.account || null
offset: options.offset || 0,
limit: options.limit || 50,
account: options.account || null,
}
const queryParameters = new URLSearchParams({
jql: query,
startAt: '0',
maxResults: opt.limit > 0 ? opt.limit.toString() : '',
fields: opt.fields.join(','),
startAt: opt.offset > 0 ? opt.offset.toString() : '',
maxResults: opt.limit > 0 ? opt.limit.toString() : '',
})
const searchResults = await sendRequest(
{
Expand Down Expand Up @@ -314,7 +315,7 @@ export default {

async getDevStatus(issueId: string, options: { account?: IJiraIssueAccountSettings } = {}): Promise<IJiraDevStatus> {
const opt = {
account: options.account || null
account: options.account || null,
}
const queryParameters = new URLSearchParams({
issueId: issueId,
Expand All @@ -330,14 +331,16 @@ export default {
) as IJiraDevStatus
},

async getBoards(projectKeyOrId: string, options: { limit?: number, account?: IJiraIssueAccountSettings } = {}): Promise<IJiraBoard[]> {
async getBoards(projectKeyOrId: string, options: { limit?: number, offset?: number, account?: IJiraIssueAccountSettings } = {}): Promise<IJiraBoard[]> {
const opt = {
offset: options.offset || 0,
limit: options.limit || 50,
account: options.account || null
account: options.account || null,
}
const queryParameters = new URLSearchParams({
projectKeyOrId: projectKeyOrId,
maxResults: opt.limit.toString(),
startAt: opt.offset > 0 ? opt.offset.toString() : '',
maxResults: opt.limit > 0 ? opt.limit.toString() : '',
})
const boards = await sendRequest(
{
Expand All @@ -354,15 +357,17 @@ export default {
return []
},

async getSprints(boardId: number, options: { limit?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSprint[]> {
async getSprints(boardId: number, options: { limit?: number, offset?: number, state?: ESprintState[], account?: IJiraIssueAccountSettings } = {}): Promise<IJiraSprint[]> {
const opt = {
limit: options.limit || 50,
state: options.state || [],
account: options.account || null
offset: options.offset || 0,
limit: options.limit || 50,
account: options.account || null,
}
const queryParameters = new URLSearchParams({
maxResults: opt.limit.toString(),
state: opt.state.join(','),
startAt: opt.offset > 0 ? opt.offset.toString() : '',
maxResults: opt.limit > 0 ? opt.limit.toString() : '',
})
const sprints = await sendRequest(
{
Expand Down

0 comments on commit 55241fc

Please sign in to comment.