Filterung & Paginierung
Filterung
Unsere API unterstützt leistungsstarke Filterfunktionen, die von
pg_graphql bereitgestellt werden. Sie können die meisten Felder
mithilfe verschiedener Operatoren filtern (z.B. eq, neq, gt, lt, in, like, ilike usw.).
Wichtiger Hinweis zu relationalen Filtern
In einigen Supabase pg_graphql Setups funktionieren Filter nur auf Spalten der abgefragten Tabelle/View. Das Filtern einer Basistabelle nach Feldern aus Relationen (z. B. Einrichtungen nach Location-Spalten) kann fehlschlagen.
Für kombinierte Filter (Name + PLZ/Stadt + Spezialisierung) empfehlen wir die Suchfunktionen (siehe unten).
Beispiel: Professionals nach Nachnamen-Präfix filtern.
query ProfessionalsByLastNamePrefix($pattern: String!, $limit: Int!) {
professionalsCollection(
filter: { last_name: { ilike: $pattern } }
first: $limit
) {
edges {
node {
id
first_name
last_name
}
}
}
} Detaillierte Informationen zu allen verfügbaren Filteroptionen finden Sie in der pg_graphql-Dokumentation zu Filtern.
Empfohlen: Suche per Funktion
Für kombinierte Suchen (z. B. Einrichtungsname + PLZ/Stadt + Spezialisierung)
nutzen Sie die per GraphQL exponierten Funktionen, z. B.
search_facilities.
query SearchFacilities(
$namePattern: String!
$zip: String
$cityPattern: String
$specialisationSlug: String
$limit: Int!
$offset: Int!
) {
search_facilities(
p_name_pattern: $namePattern
p_zip_code: $zip
p_city_pattern: $cityPattern
p_specialisation_slug: $specialisationSlug
p_limit: $limit
p_offset: $offset
) {
edges {
node {
id
name
facility_type
locations {
street
zip_code
city
}
}
}
}
} Paginierung
Sammlungen unterstützen cursor-basierte Paginierung mithilfe der
Argumente first und after.
-
first: Int: Gibt die Anzahl der zurückzugebenden Elemente an. -
after: String: Nimmt einen Cursor (erhalten vonpageInfo.endCursoroder einemedge.cursoreiner vorherigen Abfrage), um den nächsten Satz von Elementen abzurufen.
Um Paginierungsinformationen zu erhalten, fügen Sie pageInfo { endCursor, hasNextPage } in Ihre Sammlungsabfrage ein.
query PaginatedProfessionals {
professionalsCollection(first: 10) {
edges {
node {
id
first_name
}
cursor
}
pageInfo {
endCursor
hasNextPage
}
totalCount
}
} Paginierung für Suchfunktionen
Die Suchfunktionen verwenden explizite Parameter
p_limit und
p_offset.
Typischer Ablauf:
- Start mit
p_offset: 0 - Für die nächste Seite Offset um Limit erhöhen (z. B. 0 → 10 → 20)