import { sql } from "drizzle-orm"; import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"; import { users } from "./users.js"; /** * sessions 表:服务端会话。cookie 持有明文 token,本表只存 token 与过期时间。 * 登出 / 改密 / 重置密码时按行删除即可失效。 */ export const sessions = sqliteTable("sessions", { id: text("id") .primaryKey() .$defaultFn(() => crypto.randomUUID()), userId: text("user_id") .notNull() .references(() => users.id, { onDelete: "cascade" }), token: text("token").notNull().unique(), expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(), createdAt: integer("created_at", { mode: "timestamp" }).notNull().default(sql`(unixepoch())`), }); export type Session = typeof sessions.$inferSelect; export type NewSession = typeof sessions.$inferInsert;