A supabase bemutatása – Az MD Tech Meetup összefoglalója az UniNow-nál

Bevezetés

A Supabase azt állítja, hogy a Firebase alternatívája, és Postgres adatbázist, hitelesítést, azonnali API-kat, Edge-funkciókat, valós idejű előfizetéseket és tárhelyet kínál. Míg a Firebase jelenleg további szolgáltatásokat kínál, mint például a Firebase ML, a Crashlytics és a Cloud Messaging, a Supabase alacsonyabb költségekkel, szállítói zárolás nélkül, relációs adatbázissal és teljesítménnyel ragyog. És tulajdonképpen öröm volt eddig a supabase-szal dolgozni.

Mi, az UniNow-nál úgy döntöttünk, hogy a Supabase-t használjuk belső irodai alkalmazásunk, az UniNowtenApp háttérprogramjában. A meetup fő célja az volt, hogy bemutassa, mire képes a supabase. (Spoiler: Sokat!)
Ennek érdekében az alkalmazást kibővítettük egy új, LunchBuddy nevű funkcióval, amelynek célja az volt, hogy valós időben jelenítse meg, ki volt az ebéd képernyőjén. És egyetlen gombnyomáson belül hozzád rendelnek egy véletlenszerű barátot, aki szintén felkeresi az ebédlőképernyőt. A pár most együtt ebédelhet.

(Ez a funkció természetesen csak bemutató célokat szolgál, és az UniNow alkalmazottai tetszés szerint költhetik el az ebédjüket)

Hozzon létre egy valós idejű adatbázist

Eleinte szükségünk van egy táblázatra, ahol eltároljuk azokat a felhasználókat, akik éppen egy adott képernyőn vannak az alkalmazásban. Ehhez két oszlopra van szükségünk.

  • id felhasználói azonosítóként (idegen kulcs a felhasználói táblázatunkhoz)
  • lunch_buddy ebédtársunk felhasználói azonosítójaként (idegen kulcs a felhasználó asztalához, nullázható)

A supabase-ben a táblák és sorok hozzáférését sorszintű biztonsági házirendek (RLS) kezelik. Ezt az új táblázatunkban engedélyeztük, mert csak a hitelesített felhasználókra szeretnénk korlátozni a hozzáférést.
Figyelje meg, milyen egyszerű volt az asztalunkat valós idejű kommunikációs képességekkel felszerelni – csak egy pipa.

Hozzon létre Postgres függvényt, hogy véletlenszerű sort kapjon

A felhasználók véletlenszerű párosításához szeretnénk lekérni egy véletlenszerű sort (kivéve az enyémet) az ebédtársasztalunkból. Ezt a feladatot egy Postgres függvény definiálásával valósítottuk meg.

create or replace function get_random_row_except(exceptId uuid)
returns uuid
language plpgsql
as $$
begin
return(select id from meetup_lunch_buddy where id != exceptId order by random() limit 1);
end;
$$;

És a következőképpen érheti el a funkciót az ügyfélen:

const { data, error } = await supabase.rpc('get_random_row_except', {
  exceptid: supabase.auth.user()?.id,
});

Sorszintű biztonsági házirendek létrehozása

A lunch_buddy asztalunkhoz való hozzáférést csak hitelesített felhasználókra szeretnénk korlátozni, így egyetlen vendég sem lophat el információkat arról, hogy ki kivel ebédel.

CREATE POLICY "Enable insert for authenticated users only" ON "public"."meetup_lunch_buddy"
AS PERMISSIVE FOR ALL
TO authenticated
USING (true)
WITH CHECK (true)

Azok számára, akik a vizuális konfigurálást részesítik előnyben, a supabase fedezte fel Önt. Sablonokat is biztosítanak az RLS használatának gyors megkezdéséhez.

Következtetés

Az automatikusan generált API-nak köszönhetően az összes vezetékezés olyan egyszerű, mint a másolás és beillesztés. És pillanatok alatt sikeresen létrehoztunk egy új táblázatot, lehetővé tették a valós idejű kommunikációt, konfiguráltuk a sorszintű biztonsági házirendeket, kibővítettük a Postgres-t egy új funkcióval, amely véletlenszerű sorokat ad vissza, és továbbfejlesztettük az UniNowtenApp alkalmazást a LunchBuddy funkcióval.

Amint látja, a supabase-szal való fejlesztés igazi ugrás lehet projektje számára!

Köszönöm, hogy elolvasta!

Reméljük, hogy tanult valami újat a supabase-ről, és szeretnénk arra biztatni, hogy próbálja ki egyedül – nem fogja megbánni!

Ha élőben szeretne hallani minket, tekintse meg a közelgő eseményeket.
https://uninow.io/