FrEDA

FrEDA

  • Docs
  • Tutorial
  • Demo

›External

Präambel

  • Architektur
  • MonoRepo Struktur

External

  • PostgreSQL / Postgraphile
  • GraphiQL

Backend

  • GraphQL Server
  • GraphQL-Modules
  • TypeGraphQL
  • GraphQL-Playground
  • Besonderheiten
  • REST-Endpoints

Frontend

  • FrEDA ReactJS-Basics
  • Common Frontend-Library
  • CLI-Tools

Deploy

  • Deployment

Roadmap

  • geplante Weiterentwicklung

PostgreSQL / Postgraphile

Um aus bestehenden Daten in PostgreSQL-Datenbanken schnellstmöglich eine Programm-Schnittstelle zu erzeugen verwenden wir das Framework Postgraphile. Dieses erlaubt es innerhalb weniger Sekunden aus einer PostgreSQL-Datenbank ein GraphQL-Server zu starten. Das Schema des GraphQL-Servers leitet sich aus den Tabellen und Spalten der PostgreSQL -Datenbank ab.

Die generierten GraphQL-Server lassen sich dann im GraphQL-Gateway zusammenführen. Über GraphQL-Merging werden mehrere GraphQL-Endpunkte zu einem einzigen GraphQL-Endpunkt zusammengführt. Dabei können die GraphQL-Felder und Typen umbenannt, umstrukturiert und mit zusätzlicher Logik ausgestattet werden. Mehr dazu im Punkt Backend GraphQL -Modules

FrEDA PostgreSQL & Prodat-PostgreSQL

Standardmäßig gibt es im FrEDA zwei externe DatenSources, für de Prodat-Datenbank und die FrEDA-Datenbank, welche Nutzerinformationen, Rollen und sontiges beinhaltet.

Start der externen Dienste kann über den Befehl yarn freda-external im Root des Projektes ausgeführt werden

Nach dem Start der beiden Postgraphile-GraphQL-Server können diese unter folgender Browser-UI lokal untersucht und getestet werden.

DienstStandard-PortBrowser-UI
GraphQL-Server: Postgraphile Prodat (Microservice)4444[Protokoll]://[Host]:4444/postgraphile/graphiql (GraphiQL)
GraphQL-Server: Postgraphile Admin-UI (Microservice)5555[Protokoll]://[Host]:5555/postgraphile/graphiql (GraphiQL)

Diese Endpunkte sollten immer hinter einem Proxy oder Firewall liegen und nicht im Netzwerk ersichtlich sein, da sonst direkter Zugriff auf die Datenbank gewährt wird. Es ist keine Authorisierung notwendig!

Beide Services machen innerhalb weniger Sekunden aus den PostgreSQL-Datenbank-Schema-Tabelle(n) einen funktionsfähigen GraphQL-Server.

postgraphile erkennt dabei automatisch relationen zwischen den Tabellen und bildet 1 zu N Beziehungen per Connection im GraphQL-Server ab. Ein GraphQL-Abfragefeld liefert dann ein Array eines GraphQL-Types zurück.

zusätzliche installierte Plugins

Postgraphile lässt sich mit Plugin erweitern. So ist es möglich vor GraphQL-Server Generierng bereits Geschäftlogiken hinzuzufügen, oder Feldnamen umzunennen oder zu transformieren.

PostGraphileConnectionFilterPlugin

dieses Postgraphile-Plugin ermöglicht eine bessere Filterung bei Connections / Listen, um bswp. folgende Abfrage in eine Query zu integrieren:

  • isNull
  • equalTo
  • include
  • like
  • ...

um nur ein paar Beispiele zu nennen. Ds Plugin erlaubt sozusagen ähnliche Abfragen wie auch ein Where in PostgreSQL.

SchemaExtensionPlugin

eigenes Plugin, welches es ermöglicht GraphQL-Typen zu erweitern um bswp. Relationen zwischen Views zu ermöglichen, welche von PostgreSQL und Postgraphile nicht standardmäßig erkannt werden. So ist es möglich zwischen Views eine Verbindung hezustellen, welche eine 1 zu N Beziehung darstellen.

MakeAddInflectorsPlugin

eigenes Plugin, welches es ermöglich vor GraphQL-Server Erstellung einige Typen- oder Feld-Namen umzunennen, um Konflikte in der Namengebung zu vermeiden. Bswp. lässt es Typen mit dem Schema-Prefix ausstatten, falls es gleieche Tabellen-Bezeichungen in den unterschiedlichen PostgreSQL-Schemas gibt.

More

Für eine detaillierte Dokumentation von Postgraphile besuche: Postgraphile

← MonoRepo StrukturGraphiQL →
  • FrEDA PostgreSQL & Prodat-PostgreSQL
  • zusätzliche installierte Plugins
    • PostGraphileConnectionFilterPlugin
    • SchemaExtensionPlugin
    • MakeAddInflectorsPlugin
  • More
FrEDA
Docs
Getting StartedFrontendBackendFrEDA Users
Tutorial
RequirementsSetup DevelopmentQuick run
Mehr
Prodat-SQLHochschule MittweidaDEVTIM IT Softwareentwicklung
Facebook Open Source
Copyright © 2021 Prodat-SQL. Built with ❤ and Docusaurus.