mirror of
https://github.com/kmc7468/arkvault.git
synced 2025-12-14 22:08:45 +00:00
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { sqliteTable, text, integer, unique } from "drizzle-orm/sqlite-core";
|
|
import { client } from "./client";
|
|
import { user } from "./user";
|
|
|
|
export const session = sqliteTable(
|
|
"session",
|
|
{
|
|
id: text("id").notNull().primaryKey(),
|
|
userId: integer("user_id")
|
|
.notNull()
|
|
.references(() => user.id),
|
|
clientId: integer("client_id").references(() => client.id),
|
|
createdAt: integer("created_at", { mode: "timestamp_ms" }).notNull(),
|
|
lastUsedAt: integer("last_used_at", { mode: "timestamp_ms" }).notNull(),
|
|
lastUsedByIp: text("last_used_by_ip"),
|
|
lastUsedByUserAgent: text("last_used_by_user_agent"),
|
|
},
|
|
(t) => ({
|
|
unq: unique().on(t.userId, t.clientId),
|
|
}),
|
|
);
|
|
|
|
export const sessionUpgradeChallenge = sqliteTable("session_upgrade_challenge", {
|
|
id: integer("id").primaryKey(),
|
|
sessionId: text("session_id")
|
|
.notNull()
|
|
.references(() => session.id)
|
|
.unique(),
|
|
clientId: integer("client_id")
|
|
.notNull()
|
|
.references(() => client.id),
|
|
answer: text("answer").notNull().unique(), // Base64
|
|
allowedIp: text("allowed_ip").notNull(),
|
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
|
});
|