82 lines
2.0 KiB
TypeScript
82 lines
2.0 KiB
TypeScript
import {
|
|
blob,
|
|
index,
|
|
int,
|
|
integer,
|
|
sqliteTable,
|
|
text,
|
|
} from "drizzle-orm/sqlite-core";
|
|
import { sql } from "drizzle-orm/sql";
|
|
|
|
export const userTable = sqliteTable("user", {
|
|
id: text()
|
|
.primaryKey(),
|
|
createdAt: integer("created_at", { mode: "timestamp" })
|
|
.default(sql`(current_timestamp)`)
|
|
.notNull(),
|
|
email: text()
|
|
.notNull(),
|
|
name: text()
|
|
.notNull(),
|
|
});
|
|
|
|
export const sessionTable = sqliteTable("session", {
|
|
id: text("id")
|
|
.primaryKey(),
|
|
createdAt: integer("created_at", { mode: "timestamp_ms" }).default(
|
|
sql`(current_timestamp)`,
|
|
),
|
|
expiresAt: integer("expires_at", { mode: "timestamp" })
|
|
.notNull(),
|
|
userId: text("user_id")
|
|
.notNull(),
|
|
});
|
|
|
|
export const performanceTable = sqliteTable("performance", {
|
|
path: text().notNull(),
|
|
search: text(),
|
|
time: int().notNull(),
|
|
createdAt: integer("created_at", {
|
|
mode: "timestamp_ms",
|
|
}).default(sql`(STRFTIME('%s', 'now') * 1000)`),
|
|
});
|
|
|
|
export const imageTable = sqliteTable("image", {
|
|
createdAt: integer("created_at", { mode: "timestamp" }).default(
|
|
sql`(current_timestamp)`,
|
|
),
|
|
url: text().notNull(),
|
|
average: text().notNull(),
|
|
blurhash: text().notNull(),
|
|
mime: text().notNull(),
|
|
});
|
|
|
|
export const documentTable = sqliteTable("document", {
|
|
name: text().notNull().primaryKey(),
|
|
lastModified: integer("last_modified").notNull(),
|
|
content: text(),
|
|
contentType: text("content_type").notNull(),
|
|
size: integer().notNull(),
|
|
perm: text().notNull(),
|
|
}, (table) => {
|
|
return [
|
|
index("name_idx").on(table.name),
|
|
];
|
|
});
|
|
|
|
export const cacheTable = sqliteTable("cache", {
|
|
scope: text().notNull(),
|
|
key: text().notNull().primaryKey(),
|
|
json: text({ mode: "json" }),
|
|
binary: blob(),
|
|
createdAt: integer("created_at", { mode: "timestamp" }).default(
|
|
sql`(current_timestamp)`,
|
|
),
|
|
expiresAt: integer("expires_at", { mode: "timestamp" }),
|
|
}, (table) => {
|
|
return [
|
|
index("key_idx").on(table.key),
|
|
index("scope_idx").on(table.scope),
|
|
];
|
|
});
|