Zum Hauptinhalt springen

@northware/database

Innerhalb von @northware/database wird die Verbindung zu den Neon Databases hergestellt. Außerdem sind hier die Drizzle Schema-Dateien der Datenbank gespeichert.

Verbindung zur Datenbank herstellen

Das Package exportiert die Variablen client und db unter der Adresse @northware/database/connect womit die Verbindung zur Datenbank hergestellt werden kann.

Drizzle Administration

Innerhalb des Packages werden auch allen Dateien gespeichert, die mit Drizzle das Schema der Datenbank definieren.

Alle Schema-Definitionen werden in dem Ordner /schema gespeichert. Das gesamte Database-Schema wird auf mehrere Dateien verteilt, um eine möglichst hohe Übersichtlichkeit zu erreichen. Damit wird diesem Ansatz gefolgt.

Das Schma soll folgendermaßen aufgeteilt werden:

  • Jede größere Datenbanktabelle erhält eine eigene Schema-Datei
  • Schema-Dateien können Schemata für mehrere Tabellen enthalten, wenn sie gemeinsam für ein Feature benötigt werden (Das Schema der Haupttabelle wird in der gleichen Datei definiert wie kleinere Tabellen, die Relationen zur Haupttabelle haben).

Das Drizzle Kit wird verwendet, um das Datenbank-Schema der Neon Database mit den Schema-Definitionen in der Codebase abzustimmen.

Der Workflow mit Drizzle Kit und die Verbindung zur Datenbank in diesem Workflow wird in der drizzle.config.ts konfiguriert. Hier ist definiert, dass alle Schema-Dateien im ./schema Ordner abgelegt sind. Außerdem ist hier definiert, dass die von Drizzle generierten Migrations-Dateien im Ordner ./drizzle-migrations abgelegt werden sollen. Da diese Dateien nur temporär benötigt werden, wird der Ordner drizzle-migrations von Git ignoriert.

Die drizzle.config.ts greift auf die Environment-Variable NW_API zu. Diese Variable muss innerhalb einer ./.env.local im @northware/database Package definiert werden und die Verbindungs-URL zur Datenbank enthalten.

Drizzle Kit

Die Drizzle Migrationen werden mit der Console durchgeführt und können nicht innerhalb einer App umgesetzt werden. Die Commands müssen daher im Ordner [project base path]/packages/database ausgeführt werden.

Es gibt unterschiedliche drizzle-kit Commands zur Kommunikation zwischen Codebase und Database