#import "@preview/wrap-it:0.1.1": *

#pagebreak()

== Query Builder & Query Store <query>

Queries sind Abfragen an die Mitgliederdaten, die von den Nutzern selbst definiert und in anderen Modulen verwendet werden können.

#figure(
  image("../../images/query-visual-builder.png", width: 100%),
)

Queries können entweder visuell zusammengebaut oder mit SQL geschrieben werden.

Dabei muss beachtet werden, dass mit diesen Queries keine Daten verändert werden können.

#figure(
  image("../../images/query-builder-result.png", width: 100%),
)

Die Ausgabe beinhaltet dann die ausgewählten Felder einer Tabelle, wobei `*` bedeutet, dass alle Felder angefragt werden sollen. Weiterhin zeigt die Ausgabe an, wie viele Treffer gefunden wurden.

#wrap-content(
  figure(
    image("../../images/query-builder-bar.png", width: 6.5cm),
  ),
)[
Die Symbole der Leiste des Builders ermöglichen die Ausführung einer Abfrage, aber auch den Export oder die Speicherung einer Abfrage.

Der Export ermöglicht das Speichern der Abfrageergebnisse in einer CSV-Datei. Weiterhin können entweder die Abfrageergebnisse geleert oder die Abfrage und dessen Ergebnisse zurückgesetzt werden. Auch kann eine ausgewählte Abfrage überschrieben werden.
]

Die Queries können gespeichert werden, damit diese dann zum Beispiel im Newsletter (@newsletter) verwendet werden können.
\
\
Typische Anwendungsfälle für die Abfragen wären zum Beispiel Mitglieder unter bzw. über 18 Jahre. Dadurch können die Anzahl ausgegeben oder Statistiken erstellt werden.
\
\
*Hinweis:* Der Query-Builder beinhaltet 2 Key-Words, welche innerhalb des SQL-Editors verwendet werden können und einen gesamten Query ersetzen:
- `member`: Ausgabe aller Mitglieder
- `memberByRunningMembership`: Ausgabe aller Mitglieder mit aktuell laufendem Mitgliedschafts-Eintrag