drop/server/prisma/models/user.prisma

56 lines
1.6 KiB
Text
Raw Permalink Normal View History

2024-11-16 16:24:23 +11:00
model User {
id String @id @default(uuid())
username String @unique
admin Boolean @default(false)
2025-03-14 12:22:08 +11:00
enabled Boolean @default(true)
2024-11-16 16:24:23 +11:00
email String
displayName String
profilePictureObjectId String // Object
2024-11-16 16:24:23 +11:00
Depot API & v4 (#298) * feat: nginx + torrential basics & services system * fix: lint + i18n * fix: update torrential to remove openssl * feat: add torrential to Docker build * feat: move to self hosted runner * fix: move off self-hosted runner * fix: update nginx.conf * feat: torrential cache invalidation * fix: update torrential for cache invalidation * feat: integrity check task * fix: lint * feat: move to version ids * fix: client fixes and client-side checks * feat: new depot apis and version id fixes * feat: update torrential * feat: droplet bump and remove unsafe update functions * fix: lint * feat: v4 featureset: emulators, multi-launch commands * fix: lint * fix: mobile ui for game editor * feat: launch options * fix: lint * fix: remove axios, use $fetch * feat: metadata and task api improvements * feat: task actions * fix: slight styling issue * feat: fix style and lints * feat: totp backend routes * feat: oidc groups * fix: update drop-base * feat: creation of passkeys & totp * feat: totp signin * feat: webauthn mfa/signin * feat: launch selecting ui * fix: manually running tasks * feat: update add company game modal to use new SelectorGame * feat: executor selector * fix(docker): update rust to rust nightly for torrential build (#305) * feat: new version ui * feat: move package lookup to build time to allow for deno dev * fix: lint * feat: localisation cleanup * feat: apply localisation cleanup * feat: potential i18n refactor logic * feat: remove args from commands * fix: lint * fix: lockfile --------- Co-authored-by: Aden Lindsay <140392385+AdenMGB@users.noreply.github.com>
2026-01-13 15:32:39 +11:00
authMecs LinkedAuthMec[]
mfas LinkedMFAMec[]
2025-01-19 16:46:43 +11:00
clients Client[]
notifications Notification[]
2025-01-19 16:46:43 +11:00
collections Collection[]
2025-03-10 11:39:45 +11:00
articles Article[]
2025-02-04 13:15:34 +11:00
2025-04-03 19:15:33 -04:00
tokens APIToken[]
sessions Session[]
2025-04-01 21:08:57 +11:00
2025-05-08 11:38:09 -04:00
saves SaveSlot[]
screenshots Screenshot[]
2025-05-27 12:30:20 -04:00
playtime Playtime[]
community: M5 -- mods catalog and achievement definitions/display Adds the M5 slice of the community layer: Mod/ModVersion/ModDependency/ ModInstallation/ModInstalledFile/AchievementDefinition (migration m5_mods_achievements). Gods/Users are referenced as plain soft columns (gameId/uploaderId/identityId), not Prisma relations, following the concurrent-edit-avoidance pattern devices.prisma established -- content.prisma and user.prisma only grow a comment each. Mods: syncs from script-library/scripts/archive-mod.py's _index/catalog.json (read-only bind mount, homelab-compose/drop-stack/docker-compose.yml) into Mod/ModVersion/ModDependency, resolves dependency refs into real Mod rows where archived, and exposes a topologically-ordered install-plan resolver with cycle/conflict/unresolved-dependency detection (GET /mods/:id/versions/:v/plan). The install manifest (ModInstallation/ModInstalledFile) records created/overwrote/skipped per file so an uninstall plan is exact, computed server-side from what was recorded, applied by the caller. Downloads stream directly off the mount (GET /mods/:id/versions/:v/download) since cdn.quasarke.net has no file_server wired to /mnt/local24/game-mods yet -- documented as a known gap in server/internal/community/README.md, deliberately not fixed by editing the live Caddyfile. A manual add form covers the DESIGN.md open-question #4 fallback (no upload write path exists). Achievements: imports gbe_fork's archived generate_emu_config output (/mnt/local24/game-tools/goldberg/schemas, also read-only mounted) via goldbergAdapter.ts, copying icons into Drop's own object store (objectHandler.createFromSource, same mechanism as Steam cover art) so nothing is hotlinked. Display joins AchievementDefinition against M2's already-landed AchievementUnlock by (steamAppId, apiName), exactly the join key M2 designed it around -- no stub needed, M2's table was already in the tree. Verified against real fixtures: appid 245170 (Skullgirls) importing 45/45 definitions with 90 icons, and 274190 (Broforce) importing 17/17. Pages: /community/mods, /community/mods/:slug, /community/mods/new, /community/achievements, /community/games/:gameId (achievement grid + per-title mods, completion %). Small additive nav links on /community's index rather than touching the actively-changing shared game-detail page.
2026-08-03 01:16:25 -04:00
// See content.prisma's Game model for why M5 (and future milestones) do
// NOT add a relation array here -- Mod/ModInstallation reference User.id
// as a plain, unenforced-by-FK column, same pattern as devices.prisma.
// --- M3: friends, presence, chat ---
friendshipsSent Friendship[] @relation("FriendshipRequester")
friendshipsReceived Friendship[] @relation("FriendshipAddressee")
chatRoomsCreated ChatRoom[] @relation("ChatRoomCreatedBy")
chatMessages ChatMessage[] @relation("ChatMessageSender")
chatReadStates ChatReadState[] @relation("ChatReadState")
}
model Notification {
id String @id @default(uuid())
nonce String?
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
acls String[]
2025-01-19 16:46:43 +11:00
created DateTime @default(now())
title String
description String
actions String[]
read Boolean @default(false)
@@unique([userId, nonce])
}