import { sql } from 'drizzle-orm' import { text, sqliteTable } from 'drizzle-orm/sqlite-core' export const users = sqliteTable('users', { // id è l'id unico di questo utente, non è modificabile una volta creato l'utente. id: text('id') .primaryKey() .default(sql`(lower(hex(randomblob(16))))`), // Username è il nome leggibile di questo utente utilizzato anche per le // route per singolo utente, deve essere unico nel sito. // // NOTE: Quando un utente accede per la prima volta di default gli viene // chiesto se usare quello dell'account che sta usando o se cambiarlo // (in teoria non dovrebbe essere un problema poterlo modificare // successivamente). username: text('username').unique().notNull(), // FullName da mostrare in giro per il sito fullName: text('fullname'), // Email per eventuale contatto email: text('email'), }) export type User = typeof users.$inferSelect // return type when queried export type InsertUser = typeof users.$inferInsert // insert type export const accounts = sqliteTable('accounts', { // id è l'id unico di questo account, non è modificabile una volta creato l'account. id: text('id').primaryKey(), userId: text('userId') .notNull() .references(() => users.id), provider: text('provider').$type<'poisson' | 'ateneo'>().notNull(), token: text('token').notNull(), }) export type Account = typeof accounts.$inferSelect // return type when queried export type InsertAccount = typeof accounts.$inferInsert // insert type