Files
deardiary/backend/prisma/schema.prisma
lotherk 0bdd71a4ed feat: v0.1.0 - geolocation capture, calendar, search, Starlight docs site
- Automatic browser geolocation capture on event creation
- Reverse geocoding via Nominatim API for place names
- Full-text search with SQLite FTS5
- Calendar view for browsing past entries
- DateNavigator component for day navigation
- SearchModal with Ctrl+K shortcut
- QuickAddWidget with Ctrl+J shortcut
- Starlight documentation site with GitHub Pages deployment
- Multiple AI provider support (Groq, OpenAI, Anthropic, Ollama, LM Studio)
- Multi-user registration support

BREAKING: Events now include latitude/longitude/placeName fields
2026-03-27 02:27:55 +00:00

110 lines
2.5 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model User {
id String @id @default(uuid())
email String @unique
passwordHash String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
apiKeys ApiKey[]
events Event[]
journals Journal[]
tasks Task[]
settings Settings?
}
model ApiKey {
id String @id @default(uuid())
userId String
keyHash String @unique
name String
lastUsedAt DateTime?
createdAt DateTime @default(now())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId])
}
model Event {
id String @id @default(uuid())
userId String
date String
type String
content String
mediaPath String?
metadata String?
latitude Float?
longitude Float?
placeName String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId, date])
@@index([date])
}
model Journal {
id String @id @default(uuid())
userId String
date String
title String?
content String
eventCount Int
generatedAt DateTime @default(now())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
tasks Task[]
@@unique([userId, date])
@@index([userId])
}
model Task {
id String @id @default(uuid())
userId String
journalId String
type String @default("journal_generate")
status String @default("pending")
provider String
model String?
prompt String
request String?
response String?
error String?
title String?
createdAt DateTime @default(now())
completedAt DateTime?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
journal Journal @relation(fields: [journalId], references: [id], onDelete: Cascade)
@@index([userId])
@@index([journalId])
}
model Settings {
userId String @id
aiProvider String @default("groq")
aiApiKey String?
aiModel String @default("llama-3.3-70b-versatile")
aiBaseUrl String?
journalPrompt String?
language String @default("en")
timezone String @default("UTC")
providerSettings String?
journalContextDays Int @default(10)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}