mirror of
https://github.com/AeThex-Corporation/AeThex-OS.git
synced 2026-04-17 22:07:20 +00:00
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import { readFileSync } from "fs";
|
|
import { join } from "path";
|
|
import pkg from "pg";
|
|
const { Client } = pkg;
|
|
|
|
async function runOSMigration() {
|
|
const client = new Client({
|
|
connectionString: process.env.DATABASE_URL,
|
|
});
|
|
|
|
try {
|
|
await client.connect();
|
|
console.log("Connected to database");
|
|
|
|
// Read the OS kernel migration file
|
|
const migrationPath = join(process.cwd(), "migrations", "0002_os_kernel.sql");
|
|
const migrationSQL = readFileSync(migrationPath, "utf-8");
|
|
|
|
// Split by statement-breakpoint
|
|
const statements = migrationSQL
|
|
.split("--> statement-breakpoint")
|
|
.map((stmt) => stmt.trim())
|
|
.filter((stmt) => stmt.length > 0 && !stmt.startsWith("--"));
|
|
|
|
console.log(`Executing ${statements.length} statements...`);
|
|
|
|
for (let i = 0; i < statements.length; i++) {
|
|
try {
|
|
await client.query(statements[i]);
|
|
console.log(`✓ Statement ${i + 1}/${statements.length} executed`);
|
|
} catch (err: any) {
|
|
// Only fail on actual errors, not "already exists" type errors
|
|
if (
|
|
err.message.includes("already exists") ||
|
|
err.message.includes("UNIQUE constraint failed")
|
|
) {
|
|
console.log(
|
|
`⚠ Statement ${i + 1}/${statements.length} skipped (${err.message})`
|
|
);
|
|
} else {
|
|
console.error(`✗ Statement ${i + 1} failed: ${err.message}`);
|
|
throw err;
|
|
}
|
|
}
|
|
}
|
|
|
|
console.log("\n✅ OS Kernel migration completed successfully!");
|
|
} catch (err) {
|
|
console.error("\n❌ Migration failed:", err);
|
|
process.exit(1);
|
|
} finally {
|
|
await client.end();
|
|
}
|
|
}
|
|
|
|
runOSMigration();
|