# Simply CPQ Buildtime Server Dieser Ordner enthält alle relevanten Dateien und Informationen zum Simply CPQ Buildtime Server. Dieser dient der Pflege von Produktdaten, Regeln, Konditionen und Administration der Simply CPQ Anwendung durch die Bereitstellung des Pflege-Servers. ## Open Source Bibliotheken, die hier genutzt werden ### Viper Viper dient zum Laden uns Auswerten von Config-Dateien. In diesem Case werden die HTTP-Servereinstellungen und die Datenbankverbindung ausgewertet. ```` go get github.com/spf13/viper ```` ### PostgreSQL Die Datenbank des Systems ist in dem Datenbankmanagementsystem PostgreSQL abgelegt. Zum einen braucht es eine Installation des Systems, auf dem die Software Zugriff hat und zum anderen benötigt das System die entsprechenden PostgreSQL Treiber für Go. ```` go get github.com/lib/pq ```` ### Gin Gonic Webserver Library zum Routing der API. ```` go get -u github.com/gin-gonic/gin ```` ## Einrichten des Servers: ## Server API Die Server-API baut auf HTTP und auf REST auf. Antworten werden im JSON Format gesendet,ebenso, wie neu anzulegende Daten oder zu aktualisierende Daten. ### Languages Dieses Paket dient der Verwaltung der zur Verfügung stehenden Sprachen für die Stammdaten-Übersetzungen. #### hole alle Sprachen ```` get: http://server:port/languages ```` Dieser Request liefert alle Sprachen im JSON Format. Hier ein beispielhaftes Ergebnis: ````json [ { "id": 1, "locale": "de_DE", "language": "german" }, { "id": 2, "locale": "en_EN", "language": "english (EN)" }, { "id": 3, "locale": "en_US", "language": "english (US)" }, { "id": 5, "locale": "fr-FR", "language": "france" }, { "id": 6, "locale": "it-IT", "language": "italy" } ] ```` #### Hole die Sprache mit einer bestimmten ID ```` get: http://server:port/language/id z.B. get: http://server:port/language/5 ```` Dieser Request liefert die Sprache im JSON Format mit der angegebenen ID im Pfad. Hier ein beispielhaftes Ergebnis: ````json { "id": 5, "locale": "fr-FR", "language": "france" } ```` Der Request mit der ID 4 in diesem Beispiel liefert einen Fehler, da eine Sprache mit der ID 4 nicht existiert: ```` get: http://server:port/language/4 ```` #### Aktualisiere eine Sprache ```` put: http://server:port/language inhalt: application/json z.B.: { "id": 1, "locale": "de-DE", "language": "german" } ```` Alter Datensatz mit falschem locale: ````json { "id": 1, "locale": "de_DE", "language": "german" } ```` Neuer, korrigierter Datensatz: ````json { "id": 1, "locale": "de-DE", "language": "german" } ```` #### Anlegen einer neuen Sprache ```` put: http://server:port/language inhalt: application/json z.B.: { "id": 1, "locale": "de-de", "language": "german" } ```` Neuer Datensatz: ````json { "id": 7, "locale": "de-de", "language": "german" } ```` ACHTUNG: Die "id" des Datensatzes im Body wurde nicht genutzt. Sie wird bei der Neuanlage von der Datenbank bestimmt. #### Löschen eines Datensatzes ```` delete: http://server:port/language/id z.B.: delete: http://server:port/language/7 ```` Der Beispielrequest löscht den im vorherigen Abschnit angelegten Datensatz wieder.