Query

Typsichere Filter und Feldprojektion für Payload mit REST-Select-Parameter-Plugin.

Community 142 35/Wo. MIT v1.0.2

Installation

pnpm add payload-query

Über

Der `Filter`-Typ ist eine typsichere Variante von Payloads `Where`-Typ. Er validiert Feldpfade, Operatoren und Operanden gegen den TypeScript-Typ einer Collection. Der Editor markiert ungültige Pfade, nicht unterstützte Operatoren und Operanden, deren Typ nicht zum Feld passt. Die Struktur entspricht Payloads `Where`, sodass sich der Typ in `find`, `findByID` und an allen Stellen einsetzen lässt, die eine Where-Klausel erwarten. Wenn eine Abfrage zur Laufzeit variieren muss, erlaubt der `Query`-Typ, Operanden als Funktionen zu definieren, die typisierte Daten erhalten und einen Wert zurückgeben. `toFilter` löst eine solche Query in einen `Filter` auf. Ruft man `toFilter` nur mit der Query auf, erhält man eine wiederverwendbare Builder-Funktion, die die Daten später übernimmt. Alternativ lassen sich Query und Daten direkt übergeben. Für die Feldprojektion, vergleichbar mit SQL `SELECT` oder MongoDB-Projektionen, stellt das Paket den `Select`-Typ bereit. Er markiert Felder für Include oder Exclude, wobei `id` standardmäßig ausgewählt ist. Das `selectPlugin` registriert `afterRead`-Hooks an Collections und Globals und ermöglicht damit einen `select`-Query-Parameter in der REST-API. Die Anwendung lässt sich auf bestimmte Slugs beschränken. Für die interne API übernimmt die Funktion `select()` dieselbe Projektion auf einem zurückgegebenen Dokument. Die Pfadauflösung basiert auf `ts-powertypes/ts-powertools` (ObjectPaths, ValueAtPath). Zwei Einschränkungen gelten: Collections mit Zirkelbezügen können nicht direkt als Typparameter verwendet werden, stattdessen hilft `Pick<>` oder `any`. Verschachtelte Feldselektion wird nicht unterstützt, verschachtelte Felder werden als Ganzes ein- oder ausgeschlossen. Die Peer-Dependency richtet sich an Payload 1.x ab Version 1.6.22.

Paketinformationen

Paketname
payload-query
Neueste Version
1.0.2
Entpackte Größe
19 kB
Lizenz
MIT
Wöchentliche Downloads
35
Zuletzt veröffentlicht
18. Apr. 2023

Mehr von teunmooij

Profil ansehen

Ähnliche Plugins

Mehr in Devtools