import Constants from 'expo-constants';

/**
 * Client-Konfiguration aus `app.json` → `expo.extra.appwrite`.
 *
 * ⚠️ Hier gehört ausschließlich hinein, was ohnehin im Bundle landet und
 * öffentlich sein darf: Endpoint, Projekt-ID, Datenbank-ID. Der Appwrite-
 * **Server-API-Key** darf niemals in den Client – er steht in der .env im
 * Repo-Root und wird nur von den Skripten in `scripts/` und später von
 * Appwrite-Functions benutzt.
 */
type AppwriteConfig = {
  endpoint: string;
  project: string;
  databaseId: string;
};

const extra = Constants.expoConfig?.extra as { appwrite?: Partial<AppwriteConfig> } | undefined;
const cfg = extra?.appwrite;

function required(key: keyof AppwriteConfig): string {
  const value = cfg?.[key];
  if (!value) {
    throw new Error(
      `Appwrite-Konfiguration unvollständig: "${key}" fehlt in app.json unter expo.extra.appwrite.`,
    );
  }
  return value;
}

export const appwriteConfig: AppwriteConfig = {
  endpoint: required('endpoint'),
  project: required('project'),
  databaseId: required('databaseId'),
};
