mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 20:19:39 +02:00
Applied formatting to 1487+ files using pnpm format:write - TypeScript/JavaScript files - Svelte components - Astro pages - JSON configs - Markdown docs 13 files still need manual review (Astro JSX comments)
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { pgTable, uuid, text, boolean, integer, timestamp, index } from 'drizzle-orm/pg-core';
|
|
import { relations } from 'drizzle-orm';
|
|
|
|
export const users = pgTable(
|
|
'users',
|
|
{
|
|
id: uuid('id').primaryKey().defaultRandom(),
|
|
externalAuthId: text('external_auth_id').unique(), // For Mana Core auth
|
|
email: text('email').unique().notNull(),
|
|
username: text('username').unique().notNull(),
|
|
name: text('name'),
|
|
avatarUrl: text('avatar_url'),
|
|
bio: text('bio'),
|
|
location: text('location'),
|
|
website: text('website'),
|
|
github: text('github'),
|
|
twitter: text('twitter'),
|
|
linkedin: text('linkedin'),
|
|
instagram: text('instagram'),
|
|
publicProfile: boolean('public_profile').default(false),
|
|
showClickStats: boolean('show_click_stats').default(true),
|
|
emailNotifications: boolean('email_notifications').default(true),
|
|
defaultExpiry: integer('default_expiry'),
|
|
profileBackground: text('profile_background'),
|
|
verified: boolean('verified').default(false),
|
|
createdAt: timestamp('created_at').defaultNow().notNull(),
|
|
updatedAt: timestamp('updated_at').defaultNow().notNull(),
|
|
},
|
|
(table) => [
|
|
index('users_email_idx').on(table.email),
|
|
index('users_username_idx').on(table.username),
|
|
index('users_external_auth_id_idx').on(table.externalAuthId),
|
|
]
|
|
);
|
|
|
|
export type User = typeof users.$inferSelect;
|
|
export type NewUser = typeof users.$inferInsert;
|
|
|
|
// Relations will be defined in relations.ts to avoid circular imports
|