initial commit of v5

This commit is contained in:
Amruth Pillai
2026-01-19 23:31:54 +01:00
parent 55bdfd0067
commit cad390fa13
1132 changed files with 200807 additions and 165288 deletions
+24
View File
@@ -0,0 +1,24 @@
import { drizzle } from "drizzle-orm/node-postgres";
import { migrate } from "drizzle-orm/node-postgres/migrator";
import { Pool } from "pg";
import { env } from "@/utils/env";
export async function migrateDatabase() {
console.log("⌛ Running database migrations...");
const pool = new Pool({ connectionString: env.DATABASE_URL });
const db = drizzle({ client: pool });
try {
await migrate(db, { migrationsFolder: "./migrations" });
console.log("✅ Database migrations completed");
} catch (error) {
console.error("🚨 Database migrations failed:", error);
} finally {
await pool.end();
}
}
if (import.meta.main) {
await migrateDatabase();
}
+33
View File
@@ -0,0 +1,33 @@
import { sql } from "drizzle-orm";
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import { env } from "@/utils/env";
export async function resetDatabase() {
console.log("⌛ Resetting database...");
const pool = new Pool({ connectionString: env.DATABASE_URL });
const db = drizzle({ client: pool });
try {
await db.transaction(async (tx) => {
await tx.execute(sql`DROP SCHEMA drizzle CASCADE`);
await tx.execute(sql`CREATE SCHEMA drizzle`);
await tx.execute(sql`GRANT ALL ON SCHEMA drizzle TO postgres`);
await tx.execute(sql`DROP SCHEMA public CASCADE`);
await tx.execute(sql`CREATE SCHEMA public`);
await tx.execute(sql`GRANT ALL ON SCHEMA public TO postgres`);
});
console.log("✅ Database reset completed");
} catch (error) {
console.error("🚨 Database reset failed:", error);
} finally {
await pool.end();
}
}
if (import.meta.main) {
await resetDatabase();
}
+42
View File
@@ -0,0 +1,42 @@
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import { schema } from "@/integrations/drizzle";
import { env } from "@/utils/env";
import { hashPassword } from "@/utils/password";
import { generateId } from "@/utils/string";
export async function seedDatabase() {
console.log("⌛ Seeding database...");
const pool = new Pool({ connectionString: env.DATABASE_URL });
const db = drizzle({ client: pool, schema });
try {
const userId = generateId();
await db.insert(schema.user).values({
id: userId,
name: "Test User",
email: "test@test.com",
username: "test",
displayUsername: "test",
emailVerified: true,
image: "https://i.pravatar.cc/300",
});
await db.insert(schema.account).values({
id: generateId(),
userId,
accountId: userId,
password: await hashPassword("password"),
});
} catch (error) {
console.error("🚨 Database seeding failed:", error);
} finally {
await pool.end();
}
}
if (import.meta.main) {
await seedDatabase();
}