mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-14 01:50:39 +09:00
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
|
|
import { companies, createDb } from "../packages/db/src/index.js";
|
||
|
|
import { loadConfig } from "../server/src/config.js";
|
||
|
|
import { issueReferenceService } from "../server/src/services/issue-references.js";
|
||
|
|
|
||
|
|
function parseFlag(name: string): string | null {
|
||
|
|
const index = process.argv.indexOf(name);
|
||
|
|
if (index < 0) return null;
|
||
|
|
const value = process.argv[index + 1];
|
||
|
|
return value && !value.startsWith("--") ? value : null;
|
||
|
|
}
|
||
|
|
|
||
|
|
async function main() {
|
||
|
|
const config = loadConfig();
|
||
|
|
const dbUrl =
|
||
|
|
process.env.DATABASE_URL?.trim()
|
||
|
|
|| config.databaseUrl
|
||
|
|
|| `postgres://paperclip:paperclip@127.0.0.1:${config.embeddedPostgresPort}/paperclip`;
|
||
|
|
|
||
|
|
const db = createDb(dbUrl);
|
||
|
|
const refs = issueReferenceService(db);
|
||
|
|
const companyId = parseFlag("--company");
|
||
|
|
const companyRows = companyId
|
||
|
|
? [{ id: companyId }]
|
||
|
|
: await db.select({ id: companies.id }).from(companies);
|
||
|
|
|
||
|
|
if (companyRows.length === 0) {
|
||
|
|
console.log("No companies found; nothing to backfill.");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log(`Backfilling issue reference mentions for ${companyRows.length} compan${companyRows.length === 1 ? "y" : "ies"}...`);
|
||
|
|
for (const company of companyRows) {
|
||
|
|
console.log(`- ${company.id}`);
|
||
|
|
await refs.syncAllForCompany(company.id);
|
||
|
|
}
|
||
|
|
console.log("Issue reference backfill complete.");
|
||
|
|
}
|
||
|
|
|
||
|
|
void main().catch((error) => {
|
||
|
|
const message = error instanceof Error ? error.message : String(error);
|
||
|
|
console.error(`Issue reference backfill failed: ${message}`);
|
||
|
|
process.exitCode = 1;
|
||
|
|
});
|