34 lines
1.4 KiB
JavaScript
34 lines
1.4 KiB
JavaScript
import { integer, sqliteTable, text, uniqueIndex } from 'drizzle-orm/sqlite-core'
|
|
|
|
export const users = sqliteTable('users', {
|
|
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
email: text('email').notNull().unique(),
|
|
passwordHash: text('password_hash').notNull(),
|
|
nickname: text('nickname').notNull(),
|
|
createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
|
|
updatedAt: integer('updated_at', { mode: 'timestamp_ms' }).notNull(),
|
|
})
|
|
|
|
export const authSessions = sqliteTable('auth_sessions', {
|
|
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
userId: integer('user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),
|
|
tokenHash: text('token_hash').notNull().unique(),
|
|
expiresAt: integer('expires_at', { mode: 'timestamp_ms' }).notNull(),
|
|
createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
|
|
})
|
|
|
|
export const plannerEntries = sqliteTable(
|
|
'planner_entries',
|
|
{
|
|
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
userId: integer('user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),
|
|
entryDate: text('entry_date').notNull(),
|
|
payload: text('payload').notNull(),
|
|
createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
|
|
updatedAt: integer('updated_at', { mode: 'timestamp_ms' }).notNull(),
|
|
},
|
|
(table) => ({
|
|
userDateUnique: uniqueIndex('planner_entries_user_date_unique').on(table.userId, table.entryDate),
|
|
}),
|
|
)
|