@frenchbaas/js 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,6 +49,12 @@ const col = client.collection('uuid-de-la-collection')
49
49
  const { data, meta } = await col.get({ page: 1, perPage: 20 })
50
50
  // meta → { total, page, per_page, total_pages }
51
51
 
52
+ // Filtrer par champ (string, number, boolean)
53
+ const { data: pending } = await col.get({ filter: { status: 'pending' } })
54
+
55
+ // Filtrer par champ references (tableau d'UUIDs — contient l'UUID)
56
+ const { data: products } = await col.get({ filter: { category_ids: 'uuid-categorie' } })
57
+
52
58
  // Récupérer un document par ID
53
59
  const doc = await col.getById('doc-uuid')
54
60
  // doc → { id, data, created_at, updated_at }
@@ -74,6 +80,32 @@ const { schema } = await col.schema()
74
80
  | `authenticated` | Token requis | Token requis |
75
81
  | `private` | Créateur uniquement | Créateur uniquement |
76
82
 
83
+ ### Permissions SDK sur les champs
84
+
85
+ Le développeur peut configurer une permission sur chaque champ d'une collection.
86
+ Ces règles sont appliquées **côté serveur**, de façon transparente pour le SDK.
87
+
88
+ | Permission | Comportement à la création | Comportement à la mise à jour |
89
+ |---|---|---|
90
+ | `writable` | L'utilisateur écrit librement **(défaut)** | Modifiable |
91
+ | `forced` | Remplacé par la valeur définie par le dev | Ignoré (non modifiable) |
92
+ | `inject_user_id` | Injecté automatiquement avec l'ID de l'utilisateur | Ignoré |
93
+ | `inject_user_email` | Injecté automatiquement avec l'email de l'utilisateur | Ignoré |
94
+ | `inject_timestamp` | Injecté automatiquement avec la date/heure serveur | Ignoré |
95
+ | `readonly` | Ignoré (seul le dev peut écrire ce champ) | Ignoré |
96
+
97
+ ```js
98
+ // Même si vous envoyez role: 'admin', le serveur force 'client' si le champ est en mode forced
99
+ await client.collection('users').create({ role: 'admin', email: 'x@x.com' })
100
+ // → { role: 'client', email: 'x@x.com' }
101
+
102
+ // Les champs inject_* n'ont pas besoin d'être envoyés
103
+ await client.collection('orders').create({ total: 99.99 })
104
+ // → { total: 99.99, created_by_email: 'user@example.com' } ← injecté par le serveur
105
+ ```
106
+
107
+ Ces permissions se configurent dans le Dashboard → collection → schéma → colonne **SDK permission**.
108
+
77
109
  ---
78
110
 
79
111
  ## Webhooks
package/dist/index.cjs CHANGED
@@ -209,6 +209,11 @@ var CollectionClient = class {
209
209
  page: options.page,
210
210
  per_page: options.perPage
211
211
  };
212
+ if (options.filter) {
213
+ for (const [key, val] of Object.entries(options.filter)) {
214
+ if (val !== void 0) params[`filter[${key}]`] = val;
215
+ }
216
+ }
212
217
  const res = await this._http.get(
213
218
  `/sdk/collections/${this._collectionId}/documents`,
214
219
  params
package/dist/index.d.mts CHANGED
@@ -47,6 +47,15 @@ interface GetOptions {
47
47
  page?: number;
48
48
  /** Documents par page — max 100 (défaut: 50) */
49
49
  perPage?: number;
50
+ /**
51
+ * Filtres sur les champs du document.
52
+ * - Champ string/number/boolean : égalité exacte
53
+ * - Champ references : l'UUID doit être présent dans le tableau
54
+ *
55
+ * @example { status: 'pending' }
56
+ * @example { category_ids: '3e0a5843-...' }
57
+ */
58
+ filter?: Record<string, string>;
50
59
  }
51
60
  type FieldType = 'string' | 'integer' | 'number' | 'boolean' | 'array' | 'object' | 'datetime';
52
61
  interface SchemaField {
package/dist/index.d.ts CHANGED
@@ -47,6 +47,15 @@ interface GetOptions {
47
47
  page?: number;
48
48
  /** Documents par page — max 100 (défaut: 50) */
49
49
  perPage?: number;
50
+ /**
51
+ * Filtres sur les champs du document.
52
+ * - Champ string/number/boolean : égalité exacte
53
+ * - Champ references : l'UUID doit être présent dans le tableau
54
+ *
55
+ * @example { status: 'pending' }
56
+ * @example { category_ids: '3e0a5843-...' }
57
+ */
58
+ filter?: Record<string, string>;
50
59
  }
51
60
  type FieldType = 'string' | 'integer' | 'number' | 'boolean' | 'array' | 'object' | 'datetime';
52
61
  interface SchemaField {
package/dist/index.js CHANGED
@@ -175,6 +175,11 @@ var CollectionClient = class {
175
175
  page: options.page,
176
176
  per_page: options.perPage
177
177
  };
178
+ if (options.filter) {
179
+ for (const [key, val] of Object.entries(options.filter)) {
180
+ if (val !== void 0) params[`filter[${key}]`] = val;
181
+ }
182
+ }
178
183
  const res = await this._http.get(
179
184
  `/sdk/collections/${this._collectionId}/documents`,
180
185
  params
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frenchbaas/js",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "SDK JavaScript officiel pour FrenchBaas",
5
5
  "author": "FrenchBaas",
6
6
  "license": "MIT",