Initial commit of Astro project: drizzle database

This commit is contained in:
2024-02-29 00:24:10 +01:00
commit ff3a44e23c
26 changed files with 6780 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
import { drizzle } from "drizzle-orm/better-sqlite3";
import Database from "better-sqlite3";
const sql = new Database("out/website.sqlite");
export const db = drizzle(sql);
+4
View File
@@ -0,0 +1,4 @@
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
import { db } from "./index";
migrate(db, { migrationsFolder: "out/drizzle" });
+43
View File
@@ -0,0 +1,43 @@
import { sql } from "drizzle-orm";
import { text, sqliteTable } from "drizzle-orm/sqlite-core";
export const users = sqliteTable("users", {
// id è l'id unico di questo utente, non è modificabile una volta creato l'utente.
id: text("id")
.primaryKey()
.default(sql`(lower(hex(randomblob(16))))`),
// Username è il nome leggibile di questo utente utilizzato anche per le
// route per singolo utente, deve essere unico nel sito.
//
// NOTE: Quando un utente accede per la prima volta di default gli viene
// chiesto se usare quello dell'account che sta usando o se cambiarlo
// (in teoria non dovrebbe essere un problema poterlo modificare
// successivamente).
username: text("username").unique().notNull(),
// FullName da mostrare in giro per il sito
fullName: text("fullname"),
// Email per eventuale contatto
email: text("email"),
});
export type User = typeof users.$inferSelect; // return type when queried
export type InsertUser = typeof users.$inferInsert; // insert type
export const accounts = sqliteTable("accounts", {
// id è l'id unico di questo account, non è modificabile una volta creato l'account.
id: text("id").primaryKey(),
userId: text("userId")
.notNull()
.references(() => users.id),
provider: text("provider").$type<"poisson" | "ateneo">().notNull(),
token: text("token").notNull(),
});
export type Account = typeof accounts.$inferSelect; // return type when queried
export type InsertAccount = typeof accounts.$inferInsert; // insert type