Compare commits

...

2 Commits

Author SHA1 Message Date
Satish Gandham
c54f171c5a Sync issues in sequence. 2024-12-16 16:08:29 +05:30
Satish Gandham
de0dbc0be5 Create indexes in sequence 2024-12-16 16:08:05 +05:30
2 changed files with 18 additions and 26 deletions

View File

@@ -225,14 +225,11 @@ export class Storage {
const response = await issueService.getIssuesForSync(this.workspaceSlug, projectId, queryParams); const response = await issueService.getIssuesForSync(this.workspaceSlug, projectId, queryParams);
await addIssuesBulk(response.results, BATCH_SIZE); await addIssuesBulk(response.results, BATCH_SIZE);
if (response.total_pages > 1) { if (response.total_pages > 1) {
const promiseArray = [];
for (let i = 1; i < response.total_pages; i++) { for (let i = 1; i < response.total_pages; i++) {
queryParams.cursor = `${PAGE_SIZE}:${i}:0`; queryParams.cursor = `${PAGE_SIZE}:${i}:0`;
promiseArray.push(issueService.getIssuesForSync(this.workspaceSlug, projectId, queryParams)); const page = await issueService.getIssuesForSync(this.workspaceSlug, projectId, queryParams);
}
const pages = await Promise.all(promiseArray);
for (const page of pages) {
await addIssuesBulk(page.results, BATCH_SIZE); await addIssuesBulk(page.results, BATCH_SIZE);
} }
} }

View File

@@ -13,16 +13,12 @@ export const createIssueIndexes = async () => {
"sequence_id", "sequence_id",
]; ];
const promises: Promise<any>[] = []; await persistence.db.exec({ sql: `CREATE UNIQUE INDEX issues_issue_id_idx ON issues (id)` });
promises.push(persistence.db.exec({ sql: `CREATE UNIQUE INDEX issues_issue_id_idx ON issues (id)` })); for (let i = 0; i < columns.length; i++) {
const column = columns[i];
columns.forEach((column) => { await persistence.db.exec({ sql: `CREATE INDEX issues_issue_${column}_idx ON issues (project_id, ${column})` });
promises.push( }
persistence.db.exec({ sql: `CREATE INDEX issues_issue_${column}_idx ON issues (project_id, ${column})` })
);
});
await Promise.all(promises);
}; };
export const createIssueMetaIndexes = async () => { export const createIssueMetaIndexes = async () => {
@@ -31,33 +27,32 @@ export const createIssueMetaIndexes = async () => {
}; };
export const createWorkSpaceIndexes = async () => { export const createWorkSpaceIndexes = async () => {
const promises: Promise<any>[] = [];
// Labels // Labels
promises.push(persistence.db.exec({ sql: `CREATE INDEX labels_name_idx ON labels (id,name,project_id)` })); await persistence.db.exec({ sql: `CREATE INDEX labels_name_idx ON labels (id,name,project_id)` });
// Modules // Modules
promises.push(persistence.db.exec({ sql: `CREATE INDEX modules_name_idx ON modules (id,name,project_id)` })); await persistence.db.exec({ sql: `CREATE INDEX modules_name_idx ON modules (id,name,project_id)` });
// States // States
promises.push(persistence.db.exec({ sql: `CREATE INDEX states_name_idx ON states (id,name,project_id)` })); await persistence.db.exec({ sql: `CREATE INDEX states_name_idx ON states (id,name,project_id)` });
// Cycles // Cycles
promises.push(persistence.db.exec({ sql: `CREATE INDEX cycles_name_idx ON cycles (id,name,project_id)` })); await persistence.db.exec({ sql: `CREATE INDEX cycles_name_idx ON cycles (id,name,project_id)` });
// Members // Members
promises.push(persistence.db.exec({ sql: `CREATE INDEX members_name_idx ON members (id,first_name)` })); await persistence.db.exec({ sql: `CREATE INDEX members_name_idx ON members (id,first_name)` });
// Estimate Points @todo // Estimate Points @todo
promises.push(persistence.db.exec({ sql: `CREATE INDEX estimate_points_name_idx ON estimate_points (id,value)` })); await persistence.db.exec({ sql: `CREATE INDEX estimate_points_name_idx ON estimate_points (id,value)` });
// Options // Options
promises.push(persistence.db.exec({ sql: `CREATE INDEX options_key_idx ON options (key)` })); await persistence.db.exec({ sql: `CREATE INDEX options_key_idx ON options (key)` });
await Promise.all(promises);
}; };
const createIndexes = async () => { const createIndexes = async () => {
log("### Creating indexes"); log("### Creating indexes");
const start = performance.now(); const start = performance.now();
const promises = [createIssueIndexes(), createIssueMetaIndexes(), createWorkSpaceIndexes()];
try { try {
await Promise.all(promises); await createIssueIndexes();
await createIssueMetaIndexes();
await createWorkSpaceIndexes();
} catch (e) { } catch (e) {
console.log((e as Error).message); console.log((e as Error).message);
} }