import 'dotenv/config' /** Einzige erlaubte Datenbank (Ticketsystem). Keine separate Portal-DB mehr. */ export const WOMS_DATABASE_ID = 'woms-database' const DEPRECATED_DATABASE_IDS = new Set([ '6943bf0e0003291f8c35', // frühere Portal-/Legacy-DB ]) function resolveDatabaseId() { const fromEnv = (process.env.APPWRITE_DATABASE_ID || '').trim() if (!fromEnv || fromEnv === WOMS_DATABASE_ID) return WOMS_DATABASE_ID if (DEPRECATED_DATABASE_IDS.has(fromEnv)) { console.warn( `[config] Veraltete APPWRITE_DATABASE_ID "${fromEnv}" – es wird nur ${WOMS_DATABASE_ID} verwendet.` ) return WOMS_DATABASE_ID } console.warn( `[config] APPWRITE_DATABASE_ID="${fromEnv}" ignoriert – Portal nutzt ausschließlich ${WOMS_DATABASE_ID}.` ) return WOMS_DATABASE_ID } export const config = { port: Number(process.env.PORT) || 3000, sessionSecret: process.env.SESSION_SECRET || '', cookieName: process.env.SESSION_COOKIE_NAME || 'webklar_portal_session', allowedCustomerStatuses: (process.env.ALLOWED_CUSTOMER_STATUSES || 'active') .split(',') .map((s) => s.trim()) .filter(Boolean), appwrite: { endpoint: process.env.APPWRITE_ENDPOINT || 'https://ticket.webklar.com/v1', projectId: process.env.APPWRITE_PROJECT_ID || '6a1058610003c5a13a05', databaseId: resolveDatabaseId(), apiKey: process.env.APPWRITE_API_KEY || '', }, collections: { customers: process.env.APPWRITE_COLLECTION_CUSTOMERS || 'customers', customerPortalAccess: process.env.APPWRITE_COLLECTION_CUSTOMER_PORTAL_ACCESS || 'customerPortalAccess', websiteProjects: process.env.APPWRITE_COLLECTION_WEBSITE_PROJECTS || 'websiteProjects', portalFeatures: process.env.APPWRITE_COLLECTION_PORTAL_FEATURES || 'portalFeatures', }, gitea: { webhookToken: process.env.GITEA_WEBHOOK_TOKEN || '', baseUrl: process.env.GITEA_BASE_URL || 'https://git.webklar.com', apiToken: process.env.GITEA_API_TOKEN || '', }, preview: { baseHost: process.env.PREVIEW_BASE_HOST || 'project.webklar.com', deployRoot: process.env.PREVIEW_DEPLOY_ROOT || '', }, } export function assertServerConfig() { if (!config.sessionSecret || config.sessionSecret.length < 32) { console.warn('[config] SESSION_SECRET fehlt oder ist zu kurz (min. 32 Zeichen).') } if (!config.appwrite.apiKey) { console.warn('[config] APPWRITE_API_KEY fehlt – DB-Zugriff und Webhook schlagen fehl.') } }