Änderungen

Zur Navigation springen Zur Suche springen
2.856 Bytes hinzugefügt ,  21:53, 27. Mai 2023
Zeile 1: Zeile 1:  
Supabase ist ein Cloud-Service, der insbesondere eine Postgres-Datenbank beinhaltet, aber auch Storage und Serverless Functions.
 
Supabase ist ein Cloud-Service, der insbesondere eine Postgres-Datenbank beinhaltet, aber auch Storage und Serverless Functions.
 +
 +
 +
== Laufenlassen auf dem lokalen Rechner ==
 +
 +
Supabase läuft (fast) genauso wie in der hosted Version auf supabase.com auch auf dem lokalen Rechner.
 +
 +
Es lässt sich z.B. mit [[npx]] folgendermaßen starten
 +
  npx supabase start
 +
 +
Dann richtet es etliche Docker-Container ein, auch manche die man nicht braucht. Man kann die Container, die man nicht braucht, mit der <code>--exclude</code>-Option deaktivieren.
 +
Dazu setzt man alle nicht benötigten Container ohne Leerzeichen, aber mit Kommata getrennt hinter die Option:
 +
 +
  npx supabase start --exclude "gotrue,realtime,storage-api,imgproxy,kong,inbucket,postgrest,pgadmin-schema-diff,migra,postgres-meta,studio,deno-relay"
 +
 +
In dem Fall läuft dann tatsächlich nur [[Postgres]]. Will man doch ein bisschen arbeiten, könnte folgender Befehl passen:
 +
  npx supabase start --exclude "realtime,storage-api,imgproxy,inbucket,pgadmin-schema-diff"
 +
 +
<code>gotrue</code> ist für den API-Key notwendig. Dieser wird beim Start von supabase sonst nicht angezeigt.
 +
 +
Mit
 +
  npx supabase stop
 +
hält man die lokalen Container an.
 +
 +
== Verbindung mit hosted Supabase ==
 +
 +
  npx supabase login
 +
  npx supabase link
 +
 +
=== Übernehmen des Inhalts der Remote-Database in die lokale Umgebung ===
 +
 +
  npx supabase db remote commit
 +
  npx supabase db reset
 +
 +
=== Änderungen der lokalen Umgebung in die Hosted Database ===
 +
 +
 +
Zunächst Änderungen in der lokalen Datenbank vornehmen und dann
 +
diese Änderung in einer "Migration" speichern:
 +
  npx supabase db diff --file $DIFF_FILE_NAME
 +
 +
Schließlich diese Migration auf supabase.com "pushen":
 +
  npx supabase db push --dry-run
 +
  npx supabase db push
 +
 +
== Troubleshooting ==
 +
 +
=== Zugriff auf eigenes Schema / Namespace ===
 +
 +
Siehe https://stackoverflow.com/questions/73281996/how-to-access-custom-schema-from-supabase-js-client
 +
 +
Da es die API Settings im lokalen Supabase wohl nicht gibt, muss man durch [https://github.com/orgs/supabase/discussions/6682 einen Workaround das Schema freigeben]:
 +
 +
  alter role authenticator set pgrst.db_schemas = 'public, storage, sharebudget';
 +
  select pg_notify('pgrst', 'reload config');
 +
  select pg_notify('pgrst', 'reload schema');
 +
 +
Beim Nutzen von supabase db diff ist es dann meist sinnvoll, den --schema (-s)-Parameter zu setzen.
 +
 +
Siehe zur lokalen Entwicklung mit Schema auch: https://github.com/orgs/supabase/discussions/10428
 +
 +
== Backup der Postgres-Database ==
 +
 +
Zum Backup nutzt man das Standard-[[Postgres]]-Tool pg_dump.
 +
 +
Siehe
 +
* https://ironeko.com/posts/creating-a-local-backup-of-a-supabase-database
    
== Serverless Functions ==
 
== Serverless Functions ==
   −
Bei Supabase heißen die Serverless Functions "Edge Functions".
+
Bei Supabase heißen die Serverless Functions "Edge Functions". Es sind Funktionen, die in [[TypeScript]] geschrieben werden und in der [[Nodejs]]-Alternative [[Deno]] laufen.
 +
 
 +
Daneben sind die normalen Postgres-Funktionen auch möglich. Sie sind aus Performance-Gründen bei Daten-gestützten Aufgaben zu bevorzugen. Siehe dazu
 +
* https://supabase.com/docs/guides/database/functions
   −
Siehe:
+
Siehe zu Edge Functions:
 
* https://deno.com/blog/supabase-functions-on-deno-deploy
 
* https://deno.com/blog/supabase-functions-on-deno-deploy
 
* https://blog.logrocket.com/using-edge-functions-supabase-complete-guide/
 
* https://blog.logrocket.com/using-edge-functions-supabase-complete-guide/

Navigationsmenü