Einzigartige, lesefreundliche Identifier mit PostgreSQL

In einem meiner Projekte stelle ich zur Zeit von PHP auf JavaScript und von REST auf GraphQL um, in der Hoffnung, schlankere Services zu erhalten. Bei meinen Recherchen zu dem Thema stieß ich auf PostGraphile, das als zugrundeliegende Datenbank PostgreSQL möchte. Bisher war ein klassisches MySQL im Einsatz.

Eine Funktionalität, die ich ersetzen muss, sind einzigartige, lesefreundliche Bezeichner oder auch Slugs. Bislang gab es eine Funktionalität in meinem alten PHP-Code, die mir aus einem Titel den Slug generierte und dafür sorgte, dass dieser einzigartig in meinem Datenbestand ist. 

Mit PostgGaphile hatte ich diesen Code allerdings nicht mehr. Meine Recherchen diesbezüglich führten mich zu dem Ergebnis, dass die erwartete Funktionalität gar nicht mal in meinem Service umgesetzt gehört, sondern besser auf Datenbankebene aufgehoben ist. PostgreSQL kann das, denn ich kann hier bequem Funktionen und Trigger definieren. So wäre auch gewährleistet, dass immer ein Slug erzeugt wird, selbst wenn die Daten nicht über diesen speziellen Service kommen.

Weiterlesen

Unit-Testing in PostgreSQL

Es gibt verschiedene Stellen im Tech-Stack, an denen man seine Businesslogik liegen haben will.

In einem Symfony-Stack hat man beispielsweise eine „dumme“ Datenbank hinter einem ORM, die einfach nur die Daten speichert. Dann hat man ein beliebiges Templating-System im Frontend, dass für die Anzeige verantwortlich ist. Und dazwischen liegt Symfony im Backend und beinhaltet die Businesslogik. In diesem Fall ergibt es Sin, den Symfony-PHP-Code mit Unit-Tests abzudecken, so dass man sicher sein kann, dass da alles läuft.

Mit einem PostgreSQL-GraphQL-TypeScript-Stack braucht man aber dieses Backend nicht mehr. Oder genauer gesagt: Das Backend wandert in die Datenbank.

Weiterlesen

PostGraphile-Schema erweitern & verfeinern: Plug-ins

Wir haben an unserem Schema in den vorherigen beiden Posts zu Smart Tags und Computed Columns schon einiges anpassen können. Dabei haben wir noch immer keinen Stein auf den Fuss bekommen. PostGraphile spielt einfach mit und macht einfach was wir wollen und schenkt uns immer noch ein super GraphQL-Schema, einfach generiert von unserer Postgres-Datenbank. Ist doch schonmal richtig gut!

Heute werden wir aber mal richtig kreativ und bohren unser GraphQL-API noch einmal richtig auf. PostGraphile bietet ein ausgiebiges Plug-in-System an – und das schauen wir uns jetzt mal genauer an!

Wie schon bei den vorhergegangenen Postst gilt: Der Code für das Beispielprojekt ist auf GitHub zu finden. (Mit ein paar einzelnen Commits, um die unternommenen Schritte von hier ein bisschen nachvollziehen zu können.)

Weiterlesen

PostGraphile-Schema erweitern & verfeinern: Computed Columns

Im letzten Post haben wir schon einmal ein bisschen losgelegt, unser GraphQL-Schema mit Smart Tags anzupassen. Einfach nur ein paar Features ein- und auszuschalten oder Spalten zu entfernen reicht natürlich nicht … Wir wollen ja in der echten Welt um einiges komplexere, vielleicht auch dynamische Werte in unserem API abbilden. Ohne also noch weiter auf den Busch zu klopfen schlage ich vor, wir schauen uns einfach direkt an, wie wir mit Computed Columns arbeiten können.

Wie auch schon im letzten Post gibt es allen Code in unserem Beispielprojekt auf GitHub zum Ausprobieren und Mitverfolgen.

Weiterlesen

PostgreSQL, GraphQL & PostGraphile – ein Überblick

Wenn man heutzutage eine Software-Applikation bauen will, hat man die Auswahl aus einem bunten Strauß an Technologien. Dabei kann man schnell in Fallen laufen, da nicht alle Technologien gut miteinander arbeiten. Da wird dann plötzlich der Aufwand sehr groß, den Datenfluss durch den Tech-Stack unter Kontrolle zu halten.

Ein Setup, das gut zusammenspielt, bzw. teilweise darauf ausgelegt ist, in diesem Tech-Stack zu leben, ist Folgendes:

  • PostgreSQL für die Datenbank
  • PostGraphile zur Erstellung der API 
  • GraphQL zur Abfrage der API
  • TypeScript im Frontend (z. B. in Verbindung mit React)

Auf die drei Teile PostgreSQL, GraphQL und besonders PostGraphile wollen wir in diesem Artikel – und den folgenden Teilen der Blog-Serie – näher eingehen.

Weiterlesen