feat(server): Resources-Tabelle (Postgres) + Datei-Storage #119

Closed
opened 2026-05-18 19:52:35 +00:00 by jreinemann-euris · 0 comments
jreinemann-euris commented 2026-05-18 19:52:35 +00:00 (Migrated from github.com)

Feature: Server – Resources-Tabelle (Postgres) + Datei-Storage

Part of: #117
Depends on: #118

Ziel

Der Server hat eine resources-Tabelle in Postgres und Dateien werden in /opt/bollwerk/resources/ als Docker-Volume gespeichert.

Scope

  • Tables.kt: Neues object Resources : Table(...) mit allen Pflichtfeldern (guid als PK, title, description, tags als JSON-String, fileFormat, mimeType, fileSize, releaseDate?, createdAt, updatedAt, author?, language?, edition?)
  • Tags als text-Spalte (JSON-Array-String, kein JOIN nötig)
  • Tabelle wird via SchemaUtils.createMissingTablesAndColumns beim Start angelegt
  • Docker-Volume bollwerk_resources in tmp/docker-compose-vps.yml eingetragen (analog zu bollwerk_data)
  • Dateiname-Konvention: {guid}.{ext} im Volume-Verzeichnis
  • MAX_BODY_SIZE-Ausnahme für /api/admin/resources in Caddy-Konfiguration (min. 25 MB)

Technische Hinweise

  • Muster: Tables.kt (Items, Users, Categories, Messages)
  • Volume analog zu bollwerk_data in tmp/docker-compose-vps.yml
  • Caddy: request_body { max_size 25MB } nur für Admin-Upload-Route (in tmp/Caddyfile)

Akzeptanzkriterien

  • Tabelle resources wird beim Server-Start automatisch angelegt
  • Tags als JSON-String-Spalte (kein zusätzlicher JOIN)
  • Volume bollwerk_resources in docker-compose-vps.yml
  • MAX_BODY_SIZE auf 25 MB für Admin-Upload-Route erhöht
  • Kein Datenverlust bei Server-Neustart
## Feature: Server – Resources-Tabelle (Postgres) + Datei-Storage Part of: #117 Depends on: #118 ### Ziel Der Server hat eine `resources`-Tabelle in Postgres und Dateien werden in `/opt/bollwerk/resources/` als Docker-Volume gespeichert. ### Scope - `Tables.kt`: Neues `object Resources : Table(...)` mit allen Pflichtfeldern (guid als PK, title, description, tags als JSON-String, fileFormat, mimeType, fileSize, releaseDate?, createdAt, updatedAt, author?, language?, edition?) - Tags als `text`-Spalte (JSON-Array-String, kein JOIN nötig) - Tabelle wird via `SchemaUtils.createMissingTablesAndColumns` beim Start angelegt - Docker-Volume `bollwerk_resources` in `tmp/docker-compose-vps.yml` eingetragen (analog zu `bollwerk_data`) - Dateiname-Konvention: `{guid}.{ext}` im Volume-Verzeichnis - MAX_BODY_SIZE-Ausnahme für `/api/admin/resources` in Caddy-Konfiguration (min. 25 MB) ### Technische Hinweise - Muster: `Tables.kt` (Items, Users, Categories, Messages) - Volume analog zu `bollwerk_data` in `tmp/docker-compose-vps.yml` - Caddy: `request_body { max_size 25MB }` nur für Admin-Upload-Route (in `tmp/Caddyfile`) ### Akzeptanzkriterien - [ ] Tabelle `resources` wird beim Server-Start automatisch angelegt - [ ] Tags als JSON-String-Spalte (kein zusätzlicher JOIN) - [ ] Volume `bollwerk_resources` in docker-compose-vps.yml - [ ] MAX_BODY_SIZE auf 25 MB für Admin-Upload-Route erhöht - [ ] Kein Datenverlust bei Server-Neustart
Sign in to join this conversation.
No description provided.