Files
klarbild-oss/migrations/008_backup_metadata_apitoken.sql
tillandClaude Opus 5 e2481139a1
CI / check (push) Has been cancelled
Klarbild 1.0.0 — first public release
A self-hosted print studio: images at exact physical sizes, sheet layout with
crop marks, tiling, 1:1 PDF. Everything else — image generation, delivery,
share links, mail, Telegram — is an optional module that is off by default.

This is the neutral public twin of a private tool. Compared to that original:

- optional modules behind KLARBILD_MODULES; the default install is print-only
- English interface with German as a full second language (1,038 strings);
  the English sentence is the translation key
- no built-in accounts — first boot creates one admin from ADMIN_USERNAME /
  ADMIN_PASSWORD, or generates a password and logs it once
- delivery and backup targets are generic SFTP/FTPS endpoints, off by default
- English routes, English identifiers, English comments throughout
- two compose files: print-only by default, everything in the full one
- AGPL-3.0, CI (build, tests, type check, secret scan), CONTRIBUTING, SECURITY

124 tests green, type check clean, verified end to end against a live instance.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nh4A79bbqT9dcd2inzYUdg
2026-09-15 14:52:41 +00:00

20 lines
978 B
SQL

-- Backup to any target, metadata sidecar files, API token for external access (MCP).
-- Any extra target can be flagged as a backup target (receives ALL results).
ALTER TABLE delivery_targets ADD COLUMN IF NOT EXISTS is_backup bool NOT NULL DEFAULT false;
-- Send metadata along as a companion .md file (prompt, file name, model, …).
ALTER TABLE settings ADD COLUMN IF NOT EXISTS metadata_sidecar bool NOT NULL DEFAULT false;
-- API token for programmatic access (Klarbild MCP / automations).
ALTER TABLE settings ADD COLUMN IF NOT EXISTS api_token text;
-- Backup status per target and item (for "backed up to several targets").
CREATE TABLE IF NOT EXISTS item_backups (
item_id uuid REFERENCES items(id) ON DELETE CASCADE,
target text NOT NULL, -- 'mirror' | delivery_target UUID
status text NOT NULL DEFAULT 'mirrored' CHECK (status IN ('mirrored','failed')),
at timestamptz NOT NULL DEFAULT now(),
PRIMARY KEY (item_id, target)
);