Quickstarty

Quickstart: Baza danych

Utwórz projekt, tabelę i pierwsze zapytanie w kilku minutach.

Każdy projekt to osobny Postgres 17 z automatycznym API REST zgodnym z Supabase. Poniżej: projekt, migracja i zapytanie.

Zmienne w przykładach: $HOSTBASE_TOKEN (token dostępu), $REF (ref projektu). SDK: @hostbase/management (TypeScript) i hostbase_management (Python), pełne API: /docs/api.

1. Utwórz projekt

Token (hb_pat_…) wygenerujesz w Konto → Tokeny dostępu.

curl -X POST https://host.ulewicz.space/api/v1/projects \
  -H "Authorization: Bearer $HOSTBASE_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"shop","organization_slug":"acme","region":"pl-waw-1"}'
import { Hostbase } from "@hostbase/management";
const hb = new Hostbase({ token: process.env.HOSTBASE_TOKEN! });
const project = await hb.createProject({ body: { name: "shop", organization_slug: "acme", region: "pl-waw-1" } as never });
from hostbase_management import Hostbase
hb = Hostbase(token=os.environ["HOSTBASE_TOKEN"])
project = hb.create_project(body={"name": "shop", "organization_slug": "acme", "region": "pl-waw-1"})
hostbase login
hostbase projects create shop --region pl-waw-1 --link

2. Zastosuj migrację

Migracje są zgodne z Supabase CLI (tabela supabase_migrations).

curl -X POST https://host.ulewicz.space/api/v1/projects/$REF/database/migrations \
  -H "Authorization: Bearer $HOSTBASE_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"create_todos","sql":"create table todos(id bigint generated always as identity primary key, title text not null); alter table todos enable row level security;"}'
await hb.applyMigration({ ref, body: { name: "create_todos", sql: "create table todos(id bigint generated always as identity primary key, title text not null);" } as never });
hb.apply_migration(ref=ref, body={"name": "create_todos", "sql": "create table todos(id bigint generated always as identity primary key, title text not null);"})
hostbase migrations new create_todos   # edit supabase/migrations/<version>_create_todos.sql
hostbase db push

3. Zapytaj bazę

Przez Management API (SQL) albo przez REST projektu z kluczem anon.

curl -X POST https://host.ulewicz.space/api/v1/projects/$REF/database/query \
  -H "Authorization: Bearer $HOSTBASE_TOKEN" -H "Content-Type: application/json" \
  -d '{"query":"select now()"}'

# project REST API
curl "https://abcdefghijklmnopqrst.host.ulewicz.space/rest/v1/todos?select=*" -H "apikey: $ANON_KEY"
import { createClient } from "@supabase/supabase-js";
const supabase = createClient("https://abcdefghijklmnopqrst.host.ulewicz.space", process.env.ANON_KEY!);
const { data } = await supabase.from("todos").select("*");
from supabase import create_client
supabase = create_client("https://abcdefghijklmnopqrst.host.ulewicz.space", os.environ["ANON_KEY"])
print(supabase.table("todos").select("*").execute().data)
hostbase db query "select now()"
hostbase gen types typescript -o src/database.types.ts

Dalej: /docs/database, /docs/security/rls, /docs/pitr.