final lessons
This commit is contained in:
92
Les07-Supabase/Les07-Huiswerk.md
Normal file
92
Les07-Supabase/Les07-Huiswerk.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Les 7 — Huiswerk
|
||||
## Supabase verkennen
|
||||
|
||||
**Deadline:** Voor Les 8
|
||||
**Inleveren:** GitHub repo via Teams
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 1 — Pak Supabase Dashboard erbij
|
||||
|
||||
Klik door deze tabs in je Supabase project:
|
||||
- **Table Editor** — visueel polls en options
|
||||
- **SQL Editor** — query historie
|
||||
- **Database → Tables** — schema diagram
|
||||
- **Authentication** — preview (komt in Les 9)
|
||||
- **Settings → API** — keys
|
||||
- **Settings → Database** — connection string
|
||||
|
||||
Maak in `SUPABASE.md` een korte lijst van wat elke tab doet (2 zinnen per tab).
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 2 — Voeg eigen polls toe via SQL
|
||||
|
||||
Niet via Dashboard knopjes — via SQL Editor. Schrijf 3 INSERT statements voor eigen polls (met opties).
|
||||
|
||||
```sql
|
||||
insert into polls (title) values ('Jouw vraag hier');
|
||||
-- Vervolgens 3-4 opties voor die poll
|
||||
```
|
||||
|
||||
Hint: gebruik `returning id` om de nieuwe poll-id te krijgen.
|
||||
|
||||
Plak je SQL in `SUPABASE.md`.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 3 — Query een aggregate
|
||||
|
||||
Bedenk een query die iets niet-triviaals doet. Voorbeelden:
|
||||
- Totaal aantal opties per poll
|
||||
- Polls van vandaag (`where created_at > now() - interval '1 day'`)
|
||||
- Top 3 polls met meeste opties
|
||||
|
||||
Plak query + screenshot van resultaat in `SUPABASE.md`.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 4 — Bonus: Type generation
|
||||
|
||||
Genereer TypeScript types vanuit je Supabase schema:
|
||||
|
||||
```bash
|
||||
pnpm add -D supabase
|
||||
pnpm dlx supabase login
|
||||
pnpm dlx supabase link --project-ref <jouw-project-id>
|
||||
pnpm dlx supabase gen types typescript --linked > types/database.ts
|
||||
```
|
||||
|
||||
Gebruik types in je code:
|
||||
|
||||
```typescript
|
||||
import type { Database } from "@/types/database";
|
||||
import { createClient } from "@supabase/supabase-js";
|
||||
|
||||
export const supabase = createClient<Database>(...);
|
||||
```
|
||||
|
||||
Voordeel: autocomplete + type-safe queries.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 5 — Reflectie (200 woorden)
|
||||
|
||||
In `REFLECTIE.md`:
|
||||
- Wat snap je nu beter over relaties tussen tabellen?
|
||||
- Waar zit het verschil tussen Postgres en wat je eerder kende (Excel, MongoDB, ...)?
|
||||
- Welk onderdeel van Supabase zou je willen uitproberen?
|
||||
|
||||
---
|
||||
|
||||
## Inleveren
|
||||
|
||||
GitHub repo URL via Teams. Werkende app + SUPABASE.md + REFLECTIE.md.
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- **Eerst SQL begrijpen** — Postgres is een vaardigheid die jaren meegaat
|
||||
- **Type generation** scheelt veel bugs later — bonus aanrader
|
||||
- **Tijd:** ~2 uur
|
||||
Reference in New Issue
Block a user