import { boolean, integer, pgTable, text, timestamp } from 'drizzle-orm/pg-core'; export const user = pgTable('user', { id: text('id').primaryKey(), name: text('name').notNull(), email: text('email').notNull().unique(), emailVerified: boolean('email_verified').notNull(), image: text('image'), createdAt: timestamp('created_at', { withTimezone: true }).notNull(), updatedAt: timestamp('updated_at', { withTimezone: true }).notNull(), role: text('role'), banned: boolean('banned'), banReason: text('ban_reason'), banExpires: timestamp('ban_expires', { withTimezone: true }), normalizedEmail: text('normalized_email').unique(), wallet: text('wallet').notNull().unique(), kycVerifiedAt: timestamp('kyc_verified', { withTimezone: true }), lastLoginAt: timestamp('last_login', { withTimezone: true }), }); export const session = pgTable('session', { id: text('id').primaryKey(), expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(), token: text('token').notNull().unique(), createdAt: timestamp('created_at', { withTimezone: true }).notNull(), updatedAt: timestamp('updated_at', { withTimezone: true }).notNull(), ipAddress: text('ip_address'), userAgent: text('user_agent'), userId: text('user_id') .notNull() .references(() => user.id), impersonatedBy: text('impersonated_by'), }); export const account = pgTable('account', { id: text('id').primaryKey(), accountId: text('account_id').notNull(), providerId: text('provider_id').notNull(), userId: text('user_id') .notNull() .references(() => user.id), accessToken: text('access_token'), refreshToken: text('refresh_token'), idToken: text('id_token'), accessTokenExpiresAt: timestamp('access_token_expires_at', { withTimezone: true }), refreshTokenExpiresAt: timestamp('refresh_token_expires_at', { withTimezone: true }), scope: text('scope'), password: text('password'), createdAt: timestamp('created_at', { withTimezone: true }).notNull(), updatedAt: timestamp('updated_at', { withTimezone: true }).notNull(), }); export const verification = pgTable('verification', { id: text('id').primaryKey(), identifier: text('identifier').notNull(), value: text('value').notNull(), expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(), createdAt: timestamp('created_at', { withTimezone: true }).notNull(), updatedAt: timestamp('updated_at', { withTimezone: true }).notNull(), }); export const passkey = pgTable('passkey', { id: text('id').primaryKey(), name: text('name'), publicKey: text('public_key').notNull(), userId: text('user_id') .notNull() .references(() => user.id), credentialID: text('credential_i_d').notNull(), counter: integer('counter').notNull(), deviceType: text('device_type').notNull(), backedUp: boolean('backed_up').notNull(), transports: text('transports'), createdAt: timestamp('created_at', { withTimezone: true }), });