23 lines
891 B
TypeScript
23 lines
891 B
TypeScript
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;
|