Directus Integration & Extension
Native Directus SDK Anbindung, Fail-Fast Startup-Ping und deklaratives Schema-Management
Directus Integration & Extension
Die Datenpersistenz von LoreKeeper basiert auf Directus 12. Das Backend verbindet sich direkt über das offizielle @directus/sdk mit einem statischen Admin- oder Servicetoken.
Directus SDK Anbindung (src/plugins/directus.ts)
Die Anbindung ist als Fastify-Plugin gekapselt. Über Modul-Augmentierung steht fastify.directus in allen Routen und Services zur Verfügung:
import { createDirectus, rest, staticToken, serverPing } from '@directus/sdk';
import fp from 'fastify-plugin';
const directusPlugin = async (fastify) => {
const client = createDirectus(env.DIRECTUS_URL)
.with(rest())
.with(staticToken(env.DIRECTUS_TOKEN));
// Obligatorischer Healthcheck-Ping beim Booten
try {
const ping = await client.request(serverPing());
if (ping !== 'pong') throw new Error(`Ungültige Ping-Antwort: ${ping}`);
fastify.log.info('✅ Directus Verbindung erfolgreich verifiziert.');
} catch (err) {
fastify.log.error('❌ Directus Healthcheck fehlgeschlagen. Serverstart abgebrochen.');
throw new Error(`Directus nicht erreichbar unter ${env.DIRECTUS_URL}`);
}
fastify.decorate('directus', client);
};Fail-Fast Prinzip: Kann Directus beim Starten des Backends nicht erreicht werden, wird der Prozess sofort mit Fehlercode 1 beendet. So wird verhindert, dass Anfragen in Timeouts laufen.
Deklaratives Schema-Management (liberino-schema-hook)
Anstatt manuelle Klicks im Directus Admin-UI oder fehleranfällige manuelle SQL-Skripte vorauszusetzen, wird das vollständige Datenmodell über die Directus-Extension liberino-schema-hook verwaltet:
- Collections:
series,books,chapters,scenes,lore_entities,lore_states,style_templates,reference_images,reading_progress. - Fields & Interfaces: Automatische Registrierung von UI-Widgets (z. B. Markdown-Editoren, Farb-Badges für Status, M2O-Dropdowns und JSON-Editoren).
- Relations: Fremdschlüssel- und M2O-Beziehungen mit konfigurierbaren Löschweiterleitungen (
CASCADEoderSET NULL). - Declarative Sync: Die Extension berechnet einen kryptografischen Hash aller Schemadefinitionen. Ändert sich der Code oder fehlen Collections/Felder in der Datenbank, synchronisiert Directus diese beim Booten automatisch nach.