generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

model Post {
  id          String   @id @default(uuid())
  title       String
  slug        String   @unique
  description String
  content     String
  series      String
  tags        String   @default("[]")
  published   Boolean  @default(false)
  createdAt   DateTime @default(now())
  updatedAt   DateTime @default(now())

  comments FediverseComment[]

  @@map("posts")
}

model CustomPage {
  id          String   @id @default(uuid())
  title       String
  slug        String   @unique
  description String
  content     String
  createdAt   DateTime @default(now())
  updatedAt   DateTime @default(now())

  @@map("custom_pages")
}

model Friend {
  id          Int       @id @default(autoincrement())
  name        String
  email       String?
  avatar      String?
  siteName    String    @map("site_name")
  siteUrl     String    @map("site_url")
  description String
  createdAt   DateTime  @default(now())
  deletedAt   DateTime?

  @@map("friends")
}

model Config {
  id        Int      @id @default(autoincrement())
  key       String   @unique
  value     String
  createdAt DateTime @default(now())
  updatedAt DateTime @default(now())

  @@map("configs")
}

model FediverseGuest {
  id        Int     @id @default(autoincrement())
  name      String
  uid       String  @unique
  summary   String?
  url       String
  webUrl    String?
  avatar    String?
  banner    String?
  keyId     String
  publicKey String
  isBanned  Boolean @default(false)

  comments FediverseComment[]

  @@map("fediverse_guests")
}

model FediverseComment {
  id        Int      @id @default(autoincrement())
  uid       String   @unique
  userId    String
  content   String // HTML
  source    String? // markdown
  parsed    String // serialized HTML AST
  images    String   @default("[]")
  replyTo   String?
  postId    String
  createdAt DateTime @default(now())
  updatedAt DateTime @default(now())
  isHidden  Boolean  @default(false)

  user FediverseGuest @relation(fields: [userId], references: [uid])
  post Post           @relation(fields: [postId], references: [id])

  @@map("fediverse_comments")
}