Personal no-bs blogging platform.
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364// https://www.drawdb.app/ is ultra-useful for designing schemas.import { int, sqliteTable, text } from "drizzle-orm/sqlite-core";import * as t from "drizzle-orm/sqlite-core";import { defineRelations, sql } from 'drizzle-orm';
export const users = sqliteTable("users", { id: int().primaryKey({ autoIncrement: true }), uuid: text().$defaultFn(() => Bun.randomUUIDv7()), email: text().notNull().unique(), password: text().notNull(), role: t.text().$type<"user" | "admin">().default("user").notNull(),});
export const blogs = sqliteTable("blogs", { id: int().primaryKey({ autoIncrement: true }), user_id: int().notNull().references(() => users.id, { onDelete: 'cascade' }), uuid: text().$defaultFn(() => Bun.randomUUIDv7()), title: text().notNull(), description: text().notNull(), subdomain: text().notNull().unique(),});
export const posts = sqliteTable("posts", { id: int().primaryKey({ autoIncrement: true }), uuid: text().$defaultFn(() => Bun.randomUUIDv7()), blog_id: int().notNull().references(() => blogs.id, { onDelete: 'cascade' }), title: text().notNull(), content: t.text().notNull(), published_at: t.integer({ mode: "timestamp" }), updated_at: t.integer({ mode: "timestamp" }),});
export const sessions = sqliteTable("sessions", { id: int().primaryKey({ autoIncrement: true }), user_id: int().notNull().references(() => users.id, { onDelete: 'cascade' }), token: text().notNull().$defaultFn(() => Bun.randomUUIDv7()), issued_at: int({ mode: 'timestamp' }).default(sql`(unixepoch())`).notNull(),});
export const relations = defineRelations({ users, blogs, posts, sessions }, (r) => ({ users: { blogs: r.many.blogs(), sessions: r.many.sessions() }, blogs: { author: r.one.users({ from: r.blogs.user_id, to: r.users.id }), posts: r.many.posts(), }, posts: { blog: r.one.blogs({ from: r.posts.blog_id, to: r.blogs.id, }), }, sessions: { user: r.one.users({ from: r.sessions.user_id, to: r.users.id }), }}));