-
Notifications
You must be signed in to change notification settings - Fork 256
Expand file tree
/
Copy pathscriptRunner.ts
More file actions
54 lines (43 loc) · 1.74 KB
/
scriptRunner.ts
File metadata and controls
54 lines (43 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { PrismaClient } from "@sourcebot/db";
import { ArgumentParser } from "argparse";
import { migrateDuplicateConnections } from "./scripts/migrate-duplicate-connections";
import { injectAuditData } from "./scripts/inject-audit-data";
import { injectAuditDataV2 } from "./scripts/inject-audit-data-v2";
import { injectUserData } from "./scripts/inject-user-data";
import { confirmAction } from "./utils";
import { injectRepoData } from "./scripts/inject-repo-data";
import { testRepoQueryPerf } from "./scripts/test-repo-query-perf";
import { injectChatData } from "./scripts/inject-chat-data";
export interface Script {
run: (prisma: PrismaClient) => Promise<void>;
}
export const scripts: Record<string, Script> = {
"migrate-duplicate-connections": migrateDuplicateConnections,
"inject-audit-data": injectAuditData,
"inject-audit-data-v2": injectAuditDataV2,
"inject-user-data": injectUserData,
"inject-repo-data": injectRepoData,
"test-repo-query-perf": testRepoQueryPerf,
"inject-chat-data": injectChatData,
}
const parser = new ArgumentParser();
parser.add_argument("--url", { required: true, help: "Database URL" });
parser.add_argument("--script", { required: true, help: "Script to run" });
const [args] = parser.parse_known_args();
(async () => {
if (!(args.script in scripts)) {
console.error("Invalid script");
process.exit(1);
}
const selectedScript = scripts[args.script];
console.log("\nTo confirm:");
console.log(`- Database URL: ${args.url}`);
console.log(`- Script: ${args.script}`);
confirmAction();
const prisma = new PrismaClient({
datasourceUrl: args.url,
});
await selectedScript.run(prisma);
console.log("\nDone.");
process.exit(0);
})();