import m from "mithril" /** * Datenmodell für einen Kontakt (Ansprechpartner beim Kunden). * Jeder Kontakt ist genau einem Kunden zugeordnet (FK kunden_id). * Die Feldnamen entsprechen den serverseitigen ORM-Spalten (snake_case). * kunden_name ist keine ORM-Spalte, sondern wird serverseitig aus der * Kunde-Relationship abgeleitet und im JSON ergänzt. */ export interface iKontakt { id: number kunden_id: number kunden_name: string anrede: string name: string position: string telefon: string email: string notiz: string } /* ------------------------------------------------------------------ */ /* REST-API-Aufrufe (Client-Seite) */ /* ------------------------------------------------------------------ */ /* Die folgenden Funktionen kapseln die Kommunikation mit den */ /* serverseitigen REST-Endpunkten (/xhr/kontakt/*). */ /* ------------------------------------------------------------------ */ /** * Basis-Pfad der Kontakt-REST-Endpunkte. */ const KONTAKT_REST_BASE = "/xhr/kontakt" /** * Lädt die Kontaktliste vom Server. */ export function fetchKontakte(): Promise { return m.request({ method: "GET", url: KONTAKT_REST_BASE + "/list" }).then((result) => result as iKontakt[]) } /** * Lädt einen einzelnen Kontakt anhand seiner ID vom Server. */ export function fetchKontaktById(id: number): Promise { return m.request({ method: "GET", url: KONTAKT_REST_BASE + "/get", params: {id: id} }).then((result) => result as iKontakt) } /** * Legt einen neuen Kontakt serverseitig an. */ export function createKontaktREST(kontakt: iKontakt): Promise { return m.request({ method: "POST", url: KONTAKT_REST_BASE + "/create", body: kontakt }).then((result) => result as iKontakt) } /** * Aktualisiert einen bestehenden Kontakt serverseitig. */ export function updateKontaktREST(kontakt: iKontakt): Promise { return m.request({ method: "PUT", url: KONTAKT_REST_BASE + "/update", body: kontakt }).then((result) => result as iKontakt) } /** * Löscht einen Kontakt serverseitig anhand seiner ID. */ export function deleteKontaktREST(id: number): Promise { return m.request({ method: "DELETE", url: KONTAKT_REST_BASE + "/delete", params: {id: id} }).then(() => undefined) }