prasi-lib/server/session/schema.ts

47 lines
1.2 KiB
TypeScript
Executable File

import { createId } from "@paralleldrive/cuid2";
import { index, integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
export const session = sqliteTable(
"session",
{
session_id: text("session_id")
.notNull()
.primaryKey()
.$defaultFn(() => createId()),
created_at: integer("created_at", { mode: "timestamp_ms" }).default(
new Date()
),
active: integer("active", { mode: "boolean" }),
data: text("data", { mode: "json" }),
expired_at: integer("expired_at", { mode: "timestamp_ms" }),
},
(table) => {
return {
expired_at_idx: index("expired_at_idx").on(table.expired_at),
};
}
);
export const track = sqliteTable(
"track",
{
track_id: text("track_id")
.notNull()
.primaryKey()
.$defaultFn(() => createId()),
created_at: integer("created_at", { mode: "timestamp_ms" }).default(
new Date()
),
session_id: text("session_id"),
url: text("url").notNull(),
referer: text("referer"),
user_ip: text("user_ip"),
data: text("data", { mode: "json" }),
tstamp: integer("tstamp", { mode: "timestamp_ms" }).default(new Date()),
},
(table) => {
return {
session_id: index("session_id").on(table.session_id),
};
}
);