Deze gids legt uit hoe je de discover page functionaliteit naar Supabase upload.
Er zijn TWEE migratie bestanden die in volgorde uitgevoerd moeten worden:
Voegt ontbrekende kolommen toe en synchroniseert cuisine/cuisine_type:
- Voegt
cuisine_typekolom toe (als die niet bestaat) - Voegt
addresskolom toe (gecombineerd uit address_line1/address_line2) - Voegt
image_urlkolom toe (kopie van hero_image_url) - Converteert latitude/longitude naar TEXT type
- Maakt een trigger om
cuisineencuisine_typegesynchroniseerd te houden
Het bestand bevat:
-
Performance Indexes - Voor snelle zoekfunctionaliteit
- Indexes op
is_public,is_active,cuisine_type,price_range - Trigram indexes voor fuzzy text search
- Composite indexes voor veelgebruikte filter combinaties
- Indexes op
-
Search Functions - SQL functies voor optimale performance
search_public_locations()- Hoofdzoekfunctie met filtersget_available_cuisine_types()- Cuisine types voor dropdownget_available_cities()- Steden voor dropdownget_search_statistics()- Admin statistieken
-
Permissions - Juiste toegangsrechten voor authenticated en anonymous users
BELANGRIJK: Voer de migraties in deze volgorde uit!
- Ga naar je Supabase project dashboard: https://supabase.com/dashboard
- Klik op je project
- Ga naar SQL Editor in de linker sidebar
- Klik op New Query
- Kopieer de volledige inhoud van
supabase/migrations/20250119000002_add_discover_columns.sql - Plak in de SQL editor
- Klik op Run (of druk Cmd/Ctrl + Enter)
- Wacht tot de query succesvol is uitgevoerd
- Je zou berichten moeten zien zoals "✅ Added cuisine_type column"
- Klik op New Query (in dezelfde SQL Editor)
- Kopieer de volledige inhoud van
supabase/migrations/20250119000001_discover_search_optimization.sql - Plak in de SQL editor
- Klik op Run (of druk Cmd/Ctrl + Enter)
- Wacht tot de query succesvol is uitgevoerd
# Zorg dat je in de project root bent
cd /Users/dietmar/Desktop/ray2
# Login bij Supabase (als nog niet ingelogd)
npx supabase login
# Link je project (vervang PROJECT_ID met jouw project ID)
npx supabase link --project-ref PROJECT_ID
# Run BEIDE migraties in volgorde
# Eerst de kolommen toevoegen
npx supabase db remote commit
npx supabase db push
# Of handmatig met psql:
# psql -h your-project.supabase.co -U postgres -d postgres -f supabase/migrations/20250119000002_add_discover_columns.sql
# psql -h your-project.supabase.co -U postgres -d postgres -f supabase/migrations/20250119000001_discover_search_optimization.sqlTest of de migratie succesvol is door deze queries uit te voeren in de SQL Editor:
-- Test 1: Check of indexes zijn aangemaakt
SELECT indexname, tablename
FROM pg_indexes
WHERE tablename = 'locations'
AND indexname LIKE 'idx_locations_%';
-- Test 2: Test de search functie
SELECT * FROM search_public_locations('pizza', NULL, NULL, NULL, 10);
-- Test 3: Haal beschikbare cuisine types op
SELECT * FROM get_available_cuisine_types();
-- Test 4: Haal beschikbare steden op
SELECT * FROM get_available_cities();Na succesvolle installatie zou je het volgende moeten zien:
- Indexes: 7+ nieuwe indexes op de
locationstable - Functions: 4 nieuwe functies beschikbaar
- Performance: Zoeken op
/discoveris snel (< 100ms voor de meeste queries)
Dit betekent dat je migratie #2 nog niet hebt uitgevoerd. Voer eerst 20250119000002_add_discover_columns.sql uit.
-- Voer dit uit in de SQL Editor
CREATE EXTENSION IF NOT EXISTS pg_trgm;Zorg dat je als database owner ingelogd bent. In de Supabase dashboard heb je automatisch de juiste rechten.
De migratie converteert deze automatisch naar TEXT. Als je deze error krijgt, run dan migratie #2 opnieuw.
Controleer of de locations table bestaat:
SELECT * FROM locations LIMIT 1;Als deze fout geeft, moet je eerst de hoofdschema migratie uitvoeren.
Controleer of de trigger is aangemaakt:
SELECT trigger_name FROM information_schema.triggers
WHERE event_object_table = 'locations';Je zou sync_cuisine_trigger moeten zien.
De discover page is nu beschikbaar op:
- URL: http://localhost:3007/discover
- Met filters: http://localhost:3007/discover?cuisine=Italiaans&price=2
query- Zoekterm (naam, beschrijving, stad)cuisine- Type keuken (bijv. "Italiaans", "Frans")price- Prijsklasse (1-4)city- Stad filter
Deze migratie verwacht dat de locations table de volgende kolommen heeft:
is_public(boolean)is_active(boolean)cuisine_type(text)price_range(int)name,description,city, etc.
Als deze kolommen niet bestaan, voer dan eerst de basis schema migraties uit.
Om deze migratie te updaten in de toekomst:
- Maak een nieuwe migratie bestand aan met een hogere timestamp
- Gebruik
DROP INDEX IF EXISTSenCREATE OR REPLACE FUNCTIONvoor updates - Test altijd eerst in development voor je naar production pusht
- Vacuum regularly: Run
VACUUM ANALYZE locations;regelmatig voor optimale index performance - Monitor slow queries: Gebruik Supabase's query performance tools
- Add pagination: Voor grote datasets, implementeer pagination in de frontend