Files
better-auth-better-hub/apps/web/prisma/schema.prisma
T
Maxwell f6bcb9988f feat: improve themes (#150)
- removed code themes in favour of themes having built-in code syntax
themes.

# Themes (30)

## Supabase
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/ebe48a46-93ee-4bea-9cc8-dda97531a2c8"
/>

## Vercel
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/9736aa0d-7b72-47d7-bf24-8416aeb14b08"
/>

## Evil Rabbit
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/7e63a20d-634d-4143-8179-2b41129412b9"
/>

## Mintlify
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/67d61fb8-a9d0-44da-9d65-2dd2e5b35214"
/>

## Tailwind
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/88bc8177-f5a3-45e9-ba39-6ff3fdceb362"
/>

## OpenAI
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/432386b2-a7fb-40d0-85a7-7ed0930a5f3f"
/>

## Prisma
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/73a7b0a1-8e09-4321-b21e-c2baaf866cfa"
/>

## ElevenLabs
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/57de3e05-5924-40f2-993c-c0ba651bb6ed"
/>

## Resend
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/a9855ba8-135d-4b5c-a77d-0c081dcf552b"
/>

## Trigger.dev
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/f833d2f6-0f02-4f85-b8ba-da20ce489c98"
/>

## Nuxt
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/80cf39d5-b04c-4914-b0fe-e057581827a4"
/>

## BrowserBase
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/6be2b610-0e67-4149-8e7c-6ad3e670a96d"
/>

## Cloudflare
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/3dd6847d-e848-4718-af26-4fae755943b1"
/>

## Gemini
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/a1ba05fd-4299-4f6b-8211-18182ec96a5e"
/>

## Stripe
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/570cf5c9-d00b-4306-b7fe-72cbd6eeb941"
/>

## Bitmap
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/42e975b4-f1db-443f-9bac-daff02fdea7f"
/>

## Nior
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/0f270ede-0325-4061-9662-e4db4e06e44b"
/>

## Ice
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/96de2a91-61b9-46c6-a00f-063b6f262559"
/>

## Sand
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/162404fd-b1c6-4991-bf8f-c875fead82b0"
/>

## Forest
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/df5e64fc-d31f-4dce-b249-4bedb17e10aa"
/>

## Mono
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/f9f3e93a-c70c-457a-b214-4fecdfd31992"
/>

## Breeze
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/227fb948-ab69-44f5-bb03-16df96a73bd3"
/>

## Candy
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/e952135d-0e7b-4b7e-9e27-8259e78bd71c"
/>

## Crismon
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/8fd0ffd4-48a4-4739-8d7b-befa2379eab3"
/>

## Falcon
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/19a03c00-f31b-4977-ad7b-4a6ef70e115e"
/>

## Meadow
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/31bae90b-dc5b-4e2e-85d7-6404e1cb213c"
/>

## Midnight
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/aa2aecce-1865-4eee-a653-f43490bcc895"
/>

## Raindrop
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/793e012c-c6bb-4467-9408-48670754d4f7"
/>

## Sunset
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/34a05617-7502-447e-aba3-9fcda7564c0e"
/>

## Firecrawl
<img width="2820" height="2124" alt="image"
src="https://github.com/user-attachments/assets/25ef8dc0-352f-4f81-b00f-df1ca4d3d59d"
/>
2026-02-27 10:33:14 +10:00

291 lines
6.2 KiB
Plaintext

generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
}
datasource db {
provider = "postgresql"
}
model User {
id String @id
name String
email String
githubPat String?
onboardingDone Boolean @default(false)
emailVerified Boolean
image String?
createdAt DateTime
updatedAt DateTime
sessions Session[]
accounts Account[]
aiMessageCount Int @default(0)
lastActiveAt DateTime?
role String?
banned Boolean? @default(false)
banReason String?
banExpires DateTime?
@@map("user")
@@index([githubPat, email])
}
model Session {
id String @id
expiresAt DateTime
token String @unique
createdAt DateTime
updatedAt DateTime
ipAddress String?
userAgent String?
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
impersonatedBy String?
@@map("session")
@@index([userId, expiresAt])
}
model Account {
id String @id
accountId String
providerId String
userId String
accessToken String?
refreshToken String?
idToken String?
accessTokenExpiresAt DateTime?
refreshTokenExpiresAt DateTime?
scope String?
password String?
createdAt DateTime
updatedAt DateTime
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("account")
@@index([userId, providerId])
}
model Verification {
id String @id
identifier String
value String
expiresAt DateTime
createdAt DateTime?
updatedAt DateTime?
@@map("verification")
@@index([identifier, expiresAt])
}
model GithubCacheEntry {
userId String
cacheKey String
cacheType String
dataJson String
syncedAt String
etag String?
@@id([userId, cacheKey])
@@index([userId, cacheType])
@@map("github_cache_entries")
}
model GithubSyncJob {
id Int @id @default(autoincrement())
userId String
dedupeKey String
jobType String
payloadJson String
status String @default("pending")
attempts Int @default(0)
nextAttemptAt String
startedAt String?
lastError String?
createdAt String
updatedAt String
@@unique([userId, dedupeKey], map: "idx_github_sync_jobs_dedupe_active")
@@index([userId, status, nextAttemptAt, id])
@@map("github_sync_jobs")
}
model ChatConversation {
id String @id
userId String
chatType String
contextKey String
title String?
activeStreamId String?
createdAt String
updatedAt String
messages ChatMessage[]
@@unique([userId, contextKey])
@@index([userId, chatType])
@@map("chat_conversations")
}
model ChatMessage {
id String @id
conversationId String
role String
content String
partsJson String?
createdAt String
conversation ChatConversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
@@index([conversationId, createdAt])
@@map("chat_messages")
}
model GhostTab {
userId String
tabId String
label String
position Int
@@id([userId, tabId])
@@map("ghost_tabs")
}
model GhostTabState {
userId String @id
activeTabId String
counter Int @default(1)
@@map("ghost_tab_state")
}
model UserSettings {
userId String @id
displayName String?
theme String @default("system")
colorTheme String @default("hub")
colorMode String @default("dark")
ghostModel String @default("auto")
useOwnApiKey Boolean @default(false)
openrouterApiKey String?
githubPat String?
codeThemeLight String @default("vitesse-light")
codeThemeDark String @default("vitesse-black")
codeFont String @default("default")
codeFontSize Int @default(13)
onboardingDone Boolean @default(false)
updatedAt String
@@map("user_settings")
}
model CustomCodeTheme {
id String @id
userId String
name String
mode String @default("dark")
themeJson String
bgColor String
fgColor String
accentColor String
createdAt String
@@map("custom_code_themes")
}
model SearchEmbedding {
id String @id
userId String
contentType String
contentKey String
owner String
repo String
itemNumber Int
contentHash String
embeddingJson String
title String?
snippet String
metadataJson String?
createdAt String
updatedAt String
@@index([userId, owner, repo])
@@index([userId, contentType, contentKey])
@@map("search_embeddings")
}
model PinnedItem {
id String @id
userId String
owner String
repo String
url String
title String
itemType String
pinnedAt String
@@unique([userId, owner, repo, url])
@@index([userId, owner, repo])
@@map("pinned_items")
}
model PromptRequest {
id String @id
userId String
userLogin String?
userName String?
userAvatarUrl String?
owner String
repo String
title String
body String
status String @default("open")
acceptedById String?
acceptedByName String?
createdAt String
updatedAt String
@@index([owner, repo, status])
@@index([userId])
@@map("prompt_requests")
}
model PromptRequestComment {
id String @id
promptRequestId String
userId String
userLogin String?
userName String
userAvatarUrl String
body String
createdAt String
updatedAt String
@@index([promptRequestId, createdAt])
@@index([userId])
@@map("prompt_request_comments")
}
model PromptRequestReaction {
id String @id
promptRequestId String
userId String
userLogin String?
userName String
userAvatarUrl String
content String
createdAt String
@@unique([promptRequestId, userId, content])
@@index([promptRequestId])
@@index([userId])
@@map("prompt_request_reactions")
}