Appwrite-Abfragen: select, notEqual, countDocuments und Nachbau dazu

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-04 08:38:21 +00:00
1 parent 8c1055e8a0
commit 2dd9c0dec7
3 files changed
+190 -7

No files matched your search

+17
View File
@@ -91,6 +91,14 @@ export const Query = {
cursorAfter: (documentId) => ({ method: 'cursorAfter', values: [documentId] }),
orderDesc: (attribute) => ({ method: 'orderDesc', attribute }),
orderAsc: (attribute) => ({ method: 'orderAsc', attribute }),
/** Nur diese Felder zurueckgeben (die $-Felder wie $id liefert Appwrite immer mit) */
select: (attributes) => ({ method: 'select', values: attributes }),
/** Ein Wert oder eine Liste: kein Dokument mit einem der Werte ("keiner von") */
notEqual: (attribute, value) => ({
method: 'notEqual',
attribute,
values: Array.isArray(value) ? value : [value],
}),
}
export const ID = {
@@ -169,6 +177,15 @@ export async function listDocuments(collectionId, queries = []) {
return result.documents
}
/**
* Anzahl der Treffer: ein Aufruf mit limit(1), gelesen wird das Feld total der Antwort (Treffer ohne limit/cursor).
* queries sind nur Filter, nie limit/order/cursor. Liefert null, wenn die Antwort kein total hat.
*/
export async function countDocuments(collectionId, queries = []) {
const result = await adminFetch(collectionPath(collectionId), { queries: [...queries, Query.limit(1)] })
return typeof result?.total === 'number' ? result.total : null
}
/**
* Ein Aufruf mit allen Seiten: sortiert nach $id, Seite fuer Seite per cursorAfter, bis eine Seite kuerzer als
* pageSize ist. queries enthalten nur Filter, nie limit/order/cursor (die setzt die Funktion selbst). Mehr als max