diff --git a/.env.example b/.env.example index ccb32a368..757de06b1 100644 --- a/.env.example +++ b/.env.example @@ -7,6 +7,9 @@ # The database URL is used to connect to your Supabase database. POSTGRES_URL="postgres://postgres.[USERNAME]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:6543/postgres?workaround=supabase-pooler.vercel" +# DB_PREFIX is used to prefix the database tables, e.g. "t3" will create tables like "t3_user" +DB_PREFIX="t3" + # You can generate the secret via 'openssl rand -base64 32' on Unix # @see https://next-auth.js.org/configuration/options#secret diff --git a/packages/db/src/schema.ts b/packages/db/src/schema.ts index 3928d85ba..b3911f7b3 100644 --- a/packages/db/src/schema.ts +++ b/packages/db/src/schema.ts @@ -1,7 +1,15 @@ import { relations, sql } from "drizzle-orm"; -import { pgTable, primaryKey } from "drizzle-orm/pg-core"; +import { + integer, + primaryKey, + text, + timestamp, + uuid, + varchar, +} from "drizzle-orm/pg-core"; import { createInsertSchema } from "drizzle-zod"; import { z } from "zod"; +import { pgTable } from "./table"; export const Post = pgTable("post", (t) => ({ id: t.uuid().notNull().primaryKey().defaultRandom(), diff --git a/packages/db/src/table.ts b/packages/db/src/table.ts new file mode 100644 index 000000000..4f2289e08 --- /dev/null +++ b/packages/db/src/table.ts @@ -0,0 +1,8 @@ +import { pgTableCreator } from "drizzle-orm/pg-core"; + +export const pgTable = pgTableCreator((name: string) => { + if (process.env.DB_PREFIX) { + return `${process.env.DB_PREFIX}_${name}`; + } + return name; +}); \ No newline at end of file