Files
portfolio/scripts/fix-relations-metadata.js
denshooter 931843a5c6
Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Has been cancelled
fix: add missing readBooks translations
2026-02-16 00:37:34 +01:00

52 lines
1.7 KiB
JavaScript

#!/usr/bin/env node
require('dotenv').config();
const DIRECTUS_URL = process.env.DIRECTUS_URL || 'https://cms.dk0.dev';
const DIRECTUS_TOKEN = process.env.DIRECTUS_STATIC_TOKEN;
async function api(endpoint, method = 'GET', body = null) {
const url = `${DIRECTUS_URL}/${endpoint}`;
const options = {
method,
headers: { 'Authorization': `Bearer ${DIRECTUS_TOKEN}`, 'Content-Type': 'application/json' }
};
if (body) options.body = JSON.stringify(body);
const response = await fetch(url, options);
const data = await response.json().catch(() => ({}));
return { ok: response.ok, data };
}
async function fixRelationsMetadata() {
console.log('🔗 Fixe Sprach-Relationen Metadaten...');
const collections = ['projects', 'book_reviews', 'hobbies', 'tech_stack_categories', 'messages'];
for (const coll of collections) {
const transColl = `${coll}_translations`;
console.log(`🛠 Konfiguriere ${transColl}...`);
// Wir müssen die Relation von languages_code zur languages Tabelle
// für Directus "greifbar" machen.
await api(`relations/${transColl}/languages_code`, 'PATCH', {
meta: {
interface: 'select-dropdown',
display: 'raw'
}
});
// WICHTIG: Wir sagen dem Hauptfeld "translations" noch einmal
// ganz explizit, welches Feld in der Untertabelle für die Sprache zuständig ist.
await api(`fields/${coll}/translations`, 'PATCH', {
meta: {
interface: 'translations',
options: {
languageField: 'languages_code' // Der Name des Feldes in der *_translations Tabelle
}
}
});
}
console.log('✅ Fertig! Bitte lade Directus neu.');
}
fixRelationsMetadata().catch(console.error);