forked from syntaxbullet/AuroraBot-discord
feat: Enhance update requirements check to include database migrations and rename related interfaces and methods.
This commit is contained in:
@@ -52,15 +52,15 @@ export const update = createCommand({
|
||||
components: []
|
||||
});
|
||||
|
||||
// 1. Check dependencies
|
||||
const { needsInstall } = await UpdateService.checkDependencies(branch);
|
||||
// 1. Check what the update requires
|
||||
const { needsInstall, needsMigrations } = await UpdateService.checkUpdateRequirements(branch);
|
||||
|
||||
// 2. Prepare context BEFORE update
|
||||
await UpdateService.prepareRestartContext({
|
||||
channelId: interaction.channelId,
|
||||
userId: interaction.user.id,
|
||||
timestamp: Date.now(),
|
||||
runMigrations: true,
|
||||
runMigrations: needsMigrations,
|
||||
installDependencies: needsInstall
|
||||
});
|
||||
|
||||
|
||||
@@ -95,16 +95,17 @@ describe("UpdateService", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("checkDependencies", () => {
|
||||
test("should detect package.json change", async () => {
|
||||
const result = await UpdateService.checkDependencies("main");
|
||||
describe("checkUpdateRequirements", () => {
|
||||
test("should detect package.json and schema.ts changes", async () => {
|
||||
const result = await UpdateService.checkUpdateRequirements("main");
|
||||
|
||||
expect(result.needsInstall).toBe(true);
|
||||
expect(result.needsMigrations).toBe(false); // mock doesn't include schema.ts
|
||||
expect(result.error).toBeUndefined();
|
||||
});
|
||||
|
||||
test("should call git diff with correct branch", async () => {
|
||||
await UpdateService.checkDependencies("develop");
|
||||
await UpdateService.checkUpdateRequirements("develop");
|
||||
|
||||
const lastCall = mockExec.mock.lastCall;
|
||||
expect(lastCall).toBeDefined();
|
||||
|
||||
@@ -19,8 +19,9 @@ export interface RestartContext {
|
||||
installDependencies: boolean;
|
||||
}
|
||||
|
||||
export interface DependencyCheckResult {
|
||||
export interface UpdateCheckResult {
|
||||
needsInstall: boolean;
|
||||
needsMigrations: boolean;
|
||||
error?: Error;
|
||||
}
|
||||
|
||||
@@ -45,14 +46,18 @@ export class UpdateService {
|
||||
await execAsync(`git reset --hard origin/${branch}`);
|
||||
}
|
||||
|
||||
static async checkDependencies(branch: string): Promise<DependencyCheckResult> {
|
||||
static async checkUpdateRequirements(branch: string): Promise<UpdateCheckResult> {
|
||||
try {
|
||||
const { stdout } = await execAsync(`git diff HEAD..origin/${branch} --name-only`);
|
||||
return { needsInstall: stdout.includes("package.json") };
|
||||
return {
|
||||
needsInstall: stdout.includes("package.json"),
|
||||
needsMigrations: stdout.includes("schema.ts") || stdout.includes("drizzle/")
|
||||
};
|
||||
} catch (e) {
|
||||
console.error("Failed to check dependencies:", e);
|
||||
console.error("Failed to check update requirements:", e);
|
||||
return {
|
||||
needsInstall: false,
|
||||
needsMigrations: false,
|
||||
error: e instanceof Error ? e : new Error(String(e))
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user