summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/db/schema.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2025-06-22 13:07:02 +0200
committerMaze Winther <mazewinther@gmail.com>2025-06-22 13:07:02 +0200
commitbe970248686c0af7d8506cba8c64bf507419da3d (patch)
tree3fd8a716b7adae452f1be6dcdd946533da47ad8a /apps/web/src/lib/db/schema.ts
parentf2d27e578e6214598d36779f44fb1612764c7b3b (diff)
downloadopencut-be970248686c0af7d8506cba8c64bf507419da3d.tar.gz
so much stuff???
Diffstat (limited to 'apps/web/src/lib/db/schema.ts')
-rw-r--r--apps/web/src/lib/db/schema.ts61
1 files changed, 61 insertions, 0 deletions
diff --git a/apps/web/src/lib/db/schema.ts b/apps/web/src/lib/db/schema.ts
new file mode 100644
index 00000000..02df5d4a
--- /dev/null
+++ b/apps/web/src/lib/db/schema.ts
@@ -0,0 +1,61 @@
+import { pgTable, text, timestamp, boolean } from "drizzle-orm/pg-core";
+
+export const users = pgTable("users", {
+ id: text("id").primaryKey(),
+ name: text("name").notNull(),
+ email: text("email").notNull().unique(),
+ emailVerified: boolean("email_verified")
+ .$defaultFn(() => false)
+ .notNull(),
+ image: text("image"),
+ createdAt: timestamp("created_at")
+ .$defaultFn(() => /* @__PURE__ */ new Date())
+ .notNull(),
+ updatedAt: timestamp("updated_at")
+ .$defaultFn(() => /* @__PURE__ */ new Date())
+ .notNull(),
+}).enableRLS();
+
+export const sessions = pgTable("sessions", {
+ id: text("id").primaryKey(),
+ expiresAt: timestamp("expires_at").notNull(),
+ token: text("token").notNull().unique(),
+ createdAt: timestamp("created_at").notNull(),
+ updatedAt: timestamp("updated_at").notNull(),
+ ipAddress: text("ip_address"),
+ userAgent: text("user_agent"),
+ userId: text("user_id")
+ .notNull()
+ .references(() => users.id, { onDelete: "cascade" }),
+}).enableRLS();
+
+export const accounts = pgTable("accounts", {
+ id: text("id").primaryKey(),
+ accountId: text("account_id").notNull(),
+ providerId: text("provider_id").notNull(),
+ userId: text("user_id")
+ .notNull()
+ .references(() => users.id, { onDelete: "cascade" }),
+ accessToken: text("access_token"),
+ refreshToken: text("refresh_token"),
+ idToken: text("id_token"),
+ accessTokenExpiresAt: timestamp("access_token_expires_at"),
+ refreshTokenExpiresAt: timestamp("refresh_token_expires_at"),
+ scope: text("scope"),
+ password: text("password"),
+ createdAt: timestamp("created_at").notNull(),
+ updatedAt: timestamp("updated_at").notNull(),
+}).enableRLS();
+
+export const verifications = pgTable("verifications", {
+ id: text("id").primaryKey(),
+ identifier: text("identifier").notNull(),
+ value: text("value").notNull(),
+ expiresAt: timestamp("expires_at").notNull(),
+ createdAt: timestamp("created_at").$defaultFn(
+ () => /* @__PURE__ */ new Date()
+ ),
+ updatedAt: timestamp("updated_at").$defaultFn(
+ () => /* @__PURE__ */ new Date()
+ ),
+}).enableRLS();