54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
/**
|
|
* apply-flag-migration.ts
|
|
*
|
|
* Applies the flagged_content table migration to Turso.
|
|
* Run with: npx tsx scripts/apply-flag-migration.ts
|
|
*/
|
|
|
|
import dotenv from "dotenv";
|
|
import path from "node:path";
|
|
|
|
const envFile =
|
|
process.env.NODE_ENV === "production" ? "../.env.production" : "../.env.development";
|
|
dotenv.config({ path: path.resolve(__dirname, envFile) });
|
|
|
|
import { createClient } from "@libsql/client";
|
|
|
|
async function main() {
|
|
const db = createClient({
|
|
url: process.env.DATABASE_URL!,
|
|
authToken: process.env.DATABASE_TOKEN!,
|
|
});
|
|
|
|
console.log("Applying migration: create flagged_content table...");
|
|
|
|
await db.execute(`
|
|
CREATE TABLE IF NOT EXISTS flagged_content (
|
|
id text PRIMARY KEY NOT NULL,
|
|
content_type text NOT NULL,
|
|
content_id text NOT NULL,
|
|
field_name text NOT NULL,
|
|
notes text DEFAULT '',
|
|
flag_count integer DEFAULT 1 NOT NULL,
|
|
created_at text DEFAULT (datetime('now')) NOT NULL,
|
|
updated_at text DEFAULT (datetime('now')) NOT NULL
|
|
)
|
|
`);
|
|
|
|
await db.execute(`
|
|
CREATE INDEX IF NOT EXISTS idx_flagged_content_type ON flagged_content (content_type)
|
|
`);
|
|
|
|
await db.execute(`
|
|
CREATE INDEX IF NOT EXISTS idx_flagged_content_id ON flagged_content (content_id)
|
|
`);
|
|
|
|
console.log("Migration applied successfully.");
|
|
db.close();
|
|
}
|
|
|
|
main().catch((err) => {
|
|
console.error("Migration failed:", err);
|
|
process.exit(1);
|
|
});
|