12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import { pgTable, unique, uuid, text, timestamp, foreignKey, integer, boolean } from "drizzle-orm/pg-core"
- import { sql } from "drizzle-orm"
- export const verificationTokens = pgTable("verification_tokens", {
- id: uuid().defaultRandom().primaryKey().notNull(),
- email: text().notNull(),
- token: text().notNull(),
- expires: timestamp({ mode: 'string' }).notNull(),
- type: text().notNull(),
- createdAt: timestamp("created_at", { mode: 'string' }).defaultNow(),
- }, (table) => [
- unique("verification_tokens_token_unique").on(table.token),
- ]);
- export const accounts = pgTable("accounts", {
- id: uuid().defaultRandom().primaryKey().notNull(),
- userId: uuid("user_id").notNull(),
- type: text().notNull(),
- provider: text().notNull(),
- providerAccountId: text("provider_account_id").notNull(),
- refreshToken: text("refresh_token"),
- accessToken: text("access_token"),
- expiresAt: integer("expires_at"),
- tokenType: text("token_type"),
- scope: text(),
- idToken: text("id_token"),
- sessionState: text("session_state"),
- }, (table) => [
- foreignKey({
- columns: [table.userId],
- foreignColumns: [users.id],
- name: "accounts_user_id_users_id_fk"
- }).onDelete("cascade"),
- ]);
- export const sessions = pgTable("sessions", {
- id: uuid().defaultRandom().primaryKey().notNull(),
- sessionToken: text("session_token").notNull(),
- userId: uuid("user_id").notNull(),
- expires: timestamp({ mode: 'string' }).notNull(),
- }, (table) => [
- foreignKey({
- columns: [table.userId],
- foreignColumns: [users.id],
- name: "sessions_user_id_users_id_fk"
- }).onDelete("cascade"),
- unique("sessions_session_token_unique").on(table.sessionToken),
- ]);
- export const userActivities = pgTable("user_activities", {
- id: uuid().defaultRandom().primaryKey().notNull(),
- userId: uuid("user_id").notNull(),
- type: text().notNull(),
- description: text().notNull(),
- creditAmount: integer("credit_amount"),
- metadata: text(),
- createdAt: timestamp("created_at", { mode: 'string' }).defaultNow(),
- }, (table) => [
- foreignKey({
- columns: [table.userId],
- foreignColumns: [users.id],
- name: "user_activities_user_id_users_id_fk"
- }).onDelete("cascade"),
- ]);
- export const users = pgTable("users", {
- id: uuid().defaultRandom().primaryKey().notNull(),
- email: text().notNull(),
- password: text(),
- username: text(),
- emailVerified: timestamp("email_verified", { mode: 'string' }),
- image: text(),
- isEmailVerified: boolean("is_email_verified").default(false).notNull(),
- credits: integer().default(10).notNull(),
- createdAt: timestamp("created_at", { mode: 'string' }).defaultNow(),
- updatedAt: timestamp("updated_at", { mode: 'string' }).defaultNow(),
- subscriptionCredits: integer("subscription_credits").default(0).notNull(),
- subscriptionStatus: text("subscription_status").default('none'),
- subscriptionPlan: text("subscription_plan"),
- subscriptionStartDate: timestamp("subscription_start_date", { mode: 'string' }),
- subscriptionEndDate: timestamp("subscription_end_date", { mode: 'string' }),
- stripeCustomerId: text("stripe_customer_id"),
- stripeSubscriptionId: text("stripe_subscription_id"),
- }, (table) => [
- unique("users_email_unique").on(table.email),
- ]);
|