UNPKG

@reliverse/rse

Version:

@reliverse/rse is your all-in-one companion for bootstrapping and improving any kind of projects (especially web apps built with frameworks like Next.js) — whether you're kicking off something new or upgrading an existing app. It is also a little AI-power

83 lines (82 loc) 2.99 kB
import { re } from "@reliverse/relico"; import fs from "@reliverse/relifso"; import { relinka } from "@reliverse/relinka"; import { spinner } from "@reliverse/rempts"; import path from "node:path"; import { setupMongoDBAtlas } from "../database-providers/mongodb-atlas-setup.js"; import { setupNeonPostgres } from "../database-providers/neon-setup.js"; import { setupPrismaPostgres } from "../database-providers/prisma-postgres-setup.js"; import { setupSupabase } from "../database-providers/supabase-setup.js"; import { setupTurso } from "../database-providers/turso-setup.js"; import { addPackageDependency } from "../../utils/add-package-deps.js"; export async function setupDatabase(config) { const { database, orm, dbSetup, backend, projectDir } = config; if (backend === "convex" || database === "none") { if (backend !== "convex") { const serverDir2 = path.join(projectDir, "apps/server"); const serverDbDir = path.join(serverDir2, "src/db"); if (await fs.pathExists(serverDbDir)) { await fs.remove(serverDbDir); } } return; } const s = spinner(); const serverDir = path.join(projectDir, "apps/server"); if (!await fs.pathExists(serverDir)) { return; } try { if (orm === "prisma") { await addPackageDependency({ dependencies: ["@prisma/client"], devDependencies: ["prisma"], projectDir: serverDir }); } else if (orm === "drizzle") { if (database === "sqlite") { await addPackageDependency({ dependencies: ["drizzle-orm", "@libsql/client"], devDependencies: ["drizzle-kit"], projectDir: serverDir }); } else if (database === "postgres") { await addPackageDependency({ dependencies: ["drizzle-orm", "pg"], devDependencies: ["drizzle-kit", "@types/pg"], projectDir: serverDir }); } else if (database === "mysql") { await addPackageDependency({ dependencies: ["drizzle-orm", "mysql2"], devDependencies: ["drizzle-kit"], projectDir: serverDir }); } } else if (orm === "mongoose") { await addPackageDependency({ dependencies: ["mongoose"], devDependencies: [], projectDir: serverDir }); } if (database === "sqlite" && dbSetup === "turso") { await setupTurso(config); } else if (database === "postgres") { if (orm === "prisma" && dbSetup === "prisma-postgres") { await setupPrismaPostgres(config); } else if (dbSetup === "neon") { await setupNeonPostgres(config); } else if (dbSetup === "supabase") { await setupSupabase(config); } } else if (database === "mongodb" && dbSetup === "mongodb-atlas") { await setupMongoDBAtlas(config); } } catch (error) { s.stop(re.red("Failed to set up database")); if (error instanceof Error) { relinka("error", re.red(error.message)); } } }