Scout
Net

PfadiQL

Eine Suchsprache für Pfadfinderdaten

PfadiQL steht für Pfadfinder Query Language (Suchsprache), angelehnt an SQL und FQL (von Facebook).

Was kann PfadiQL

Mit PfadiQL kannst du in der ScoutNet API gezielt nach bestimmten Daten suchen und zwar egal welche Programmiersprache zu einsetzt. PfadiQL erlaubt das Ausdrücken von Filterregeln, ähnlich dem WHERE-Teil von SQL-Queries und ist für jeden ScoutNet API client verfügbar. Filterregeln können mit UND und ODER verbunden und geklammert werden.

Operatoren

PfadiQL bietet folgende Operatoren mit den allgemein geläufigen Bedeutungen an:

 

NOT IN LIKE <= >= < > = <> AND OR

 

Die obige Reihenfolge gibt auch die Präzedenz der Operatoren an. NOT bindet am stärksten, OR an geringsten. 
Zusätzlich gibt es noch folgende Aliase für den schnelleren Einstieg und verschiedene Geschmäcker:

 

not ! in == != and or

 

Verfügbare Datenfelder

Mit den Operatoren können Datenfelder mit Werten verglichen werden, um so die gewünschten Einträge zu finden. Die genau zur Verfügung stehenden Datenfelder sind:

kind event

id, uid, group_id, title, organizer, target_group, start_date, start_time, end_date, end_time, zip, location, url_text, url, description, last_modified_by, last_modified_on, keywords, sections

kind group

name, zip, city, district, internal_id, federal_state, country

kind url

id, group_id, url, text

Beschreibungen zu den Feldern finden sich zum Teil in der API Dokumentation des PHP clients.

Zu beachten ist: Die meisten Felder enthalten einfache Werte, z.B. kann titel gleich "Leiterrunde" sein und id gleich 12345. Hier können daher die Operatoren == <> etc. angewandt werden. Manche Felder enthalten jedoch mehrere Werte, wie z.B. keywords. Hier muss dann der Operator IN verwendet werden, um zu testen, ob ein Wert darin enthalten ist. Beim Vergleich von Strings ist zu beachten, dass diese UTF-8 kodiert sein müssen, da es sonst Probleme mit Umlauten gibt.

Platzhalter

Für Bequemlichkeit beim Maskieren/Escapen und zum Schutz vor Injection-Attacken unterstützt PfadiQL Platzhalter. Es empfiehlt sich diese zu benutzen wenn Werte in der Suchanfrage aus Benutzereingaben kommen (z.B. aus der Datenbank oder aus $_GET, $_POST, etc. ) oder um eine Suchanfrage lesbarer zu gestalten. Dafür ersetzt man einen Wert in der Suchanfrage durch ein ? und übergibt den tatsächlichen Wert. Wie das funktioniert kommt auf den jeweilgen Client an. Beispiele gibt es auf den Seiten der Clients.

Beispiele

Code

 

// alle Ausbildungstermine
"Ausbildung" IN keywords 

// Alle Leiterrunden 2011 
end_date > "2011-01-01" 
 AND start_date < "2011-12-31" 
 AND "Leiterrunde" in keywords 

// Alle Leiterrunden 2011 mit Platzhaltern 
end_date > ? AND start_date < ? AND ? in keywords 
// Parameter: '2011-01-01', '2011-12-31', 'Leiterrunde' 

// Alle Gruppenstunden der Rover und der Wölflings 
title == "Gruppenstunde" AND ( ? in sections OR ? in sections ) 
// Parameter: 'Rover', 'Wölflinge' 

// Alle Gruppenstunden ausser Rover 
title == "Gruppenstunde" AND not "Rover" in sections

 

Fragen? Probleme? Anregungen? Beiträge? Oder du willst mithelfen?

Wende dich an Chris unter chris(at)scoutnet.de.