Appwrite C++ SDK
Auto-generated API documentation for the Appwrite C++ SDK
Loading...
Searching...
No Matches
Databases.hpp
Go to the documentation of this file.
1/// @file Databases.hpp
2/// @brief Provides database management APIs: databases, collections,
3/// attributes, documents, and indexes.
4
5#ifndef DATABASES_HPP
6#define DATABASES_HPP
7
8#include "Utils.hpp"
9#include "classes/Query.hpp"
10#include "enums/HttpStatus.hpp"
12#include <string>
13
14/**
15 * @class Databases
16 * @brief Provides CRUD operations for databases, collections, documents,
17 * attributes, and indexes.
18 */
19class Databases {
20 public:
21 /**
22 * @brief Constructor for Databases class.
23 * @param projectId Appwrite project ID.
24 * @param apiKey Appwrite API key.
25 */
26 Databases(const std::string &projectId, const std::string &apiKey);
27
28 // ------------------- Database APIs -------------------
29
30 /**
31 * @brief List all databases.
32 * @return JSON string of database list.
33 */
34 std::string list();
35
36 /**
37 * @brief Get a database by ID.
38 * @param databaseId Unique ID of the database.
39 * @return JSON string of the database.
40 */
41 std::string get(const std::string &databaseId);
42
43 /**
44 * @brief Create a new database.
45 * @param databaseId Unique ID for the new database.
46 * @param name Name of the database.
47 * @param enabled Whether the database is active.
48 * @return JSON response of created database.
49 */
50 std::string create(const std::string &databaseId, const std::string &name,
51 bool enabled);
52
53 /**
54 * @brief Update an existing database.
55 * @param databaseId ID of the database to update.
56 * @param name New name of the database.
57 * @param enabled Enable or disable the database.
58 * @return JSON response.
59 */
60 std::string update(const std::string &databaseId, const std::string &name,
61 bool enabled);
62
63 /**
64 * @brief Get usage statistics of a database.
65 * @param databaseId ID of the database.
66 * @param range Time range for usage stats.
67 * @return JSON usage data.
68 */
69 std::string getDatabaseUsage(const std::string &databaseId,
70 const std::string &range);
71
72 /**
73 * @brief Get usage stats of a collection.
74 * @param databaseId ID of the database.
75 * @param collectionId ID of the collection.
76 * @param range Time range for usage.
77 * @return JSON usage data.
78 */
79 std::string getCollectionUsage(const std::string &databaseId,
80 const std::string &collectionId,
81 const std::string &range);
82
83 // ------------------- Collection APIs -------------------
84
85 /**
86 * @brief List all collections in a database.
87 * @param databaseId ID of the database.
88 * @return JSON string of collections.
89 */
90 std::string listCollection(const std::string &databaseId);
91
92 /**
93 * @brief Create a new collection.
94 * @param databaseId ID of the database.
95 * @param collectionId Unique ID for the collection.
96 * @param name Name of the collection.
97 * @param enabled Whether the collection is enabled.
98 * @return JSON response.
99 */
100 std::string createCollection(const std::string &databaseId,
101 const std::string &collectionId,
102 const std::string &name, bool enabled);
103
104 /**
105 * @brief Get a collection by ID.
106 * @param databaseId ID of the database.
107 * @param collectionId ID of the collection.
108 * @return JSON string of collection details.
109 */
110 std::string getCollection(const std::string &databaseId,
111 const std::string &collectionId);
112
113 /**
114 * @brief Update collection metadata.
115 * @param databaseId ID of the database.
116 * @param collectionId ID of the collection.
117 * @param name New name of the collection.
118 * @param enabled New status of the collection.
119 * @return JSON response.
120 */
121 std::string updateCollection(const std::string &databaseId,
122 const std::string &collectionId,
123 const std::string &name, bool enabled);
124
125 /**
126 * @brief Delete a collection by ID.
127 * @param databaseId ID of the database.
128 * @param collectionId ID of the collection.
129 * @return JSON response.
130 */
131 std::string deleteCollection(const std::string &databaseId,
132 const std::string &collectionId);
133
134 // ------------------- Attribute APIs -------------------
135
136 /**
137 * @brief List all attributes in a collection.
138 * @param databaseId ID of the database.
139 * @param collectionId ID of the collection.
140 * @return JSON list of attributes.
141 */
142 std::string listAttributes(const std::string &databaseId,
143 const std::string &collectionId);
144
145 /**
146 * @brief Create a boolean attribute.
147 * @param databaseId Database ID.
148 * @param collectionId Collection ID.
149 * @param attributeId Unique ID for the attribute.
150 * @param defaultValue Default value of the attribute.
151 * @param required Whether this field is required.
152 * @return JSON response.
153 */
154 std::string createBooleanAttribute(const std::string &databaseId,
155 const std::string &collectionId,
156 const std::string &attributeId,
157 bool defaultValue, bool required);
158
159 /**
160 * @brief Create an email attribute.
161 * @param databaseId Database ID.
162 * @param collectionId Collection ID.
163 * @param attributeId Attribute ID.
164 * @param required Required field.
165 * @param defaultValue Default email.
166 * @return JSON response.
167 */
168 std::string createEmailAttribute(const std::string &databaseId,
169 const std::string &collectionId,
170 const std::string &attributeId,
171 bool required,
172 const std::string &defaultValue);
173
174 /**
175 * @brief Create an enum attribute.
176 * @param databaseId Database ID.
177 * @param collectionId Collection ID.
178 * @param attributeId Attribute ID.
179 * @param required Required field.
180 * @param defaultValue Default value.
181 * @param elements Valid enum values.
182 * @return JSON response.
183 */
184 std::string createEnumAttribute(const std::string &databaseId,
185 const std::string &collectionId,
186 const std::string &attributeId,
187 bool required,
188 const std::string &defaultValue,
189 const std::vector<std::string> &elements);
190
191 /**
192 * @brief Create a float attribute.
193 * @param databaseId Database ID.
194 * @param collectionId Collection ID.
195 * @param attributeId Attribute ID.
196 * @param required Required field.
197 * @param min Minimum value.
198 * @param max Maximum value.
199 * @param defaultValue Default float value.
200 * @return JSON response.
201 */
202 std::string createFloatAttribute(const std::string &databaseId,
203 const std::string &collectionId,
204 const std::string &attributeId,
205 bool required, double min, double max,
206 const std::string &defaultValue);
207
208 /**
209 * @brief Create an integer attribute.
210 * @param databaseId Database ID.
211 * @param collectionId Collection ID.
212 * @param attributeId Attribute ID.
213 * @param required Required field.
214 * @param min Minimum value.
215 * @param max Maximum value.
216 * @param defaultValue Default integer value.
217 * @return JSON response.
218 */
219 std::string createIntegerAttribute(const std::string &databaseId,
220 const std::string &collectionId,
221 const std::string &attributeId,
222 bool required, int min, int max,
223 const std::string &defaultValue);
224
225 /**
226 * @brief Create an IP address attribute.
227 * @param databaseId Database ID.
228 * @param collectionId Collection ID.
229 * @param attributeId Attribute ID.
230 * @param required Required field.
231 * @param defaultValue Default IP address.
232 * @return JSON response.
233 */
234 std::string createIPaddressAttribute(const std::string &databaseId,
235 const std::string &collectionId,
236 const std::string &attributeId,
237 bool required,
238 const std::string &defaultValue);
239
240 /**
241 * @brief Create a string attribute.
242 * @param databaseId Database ID.
243 * @param collectionId Collection ID.
244 * @param attributeId Attribute ID.
245 * @param required Required field.
246 * @param defaultValue Default string value.
247 * @param elements Allowed string values (for enum-like behavior).
248 * @param size Maximum length of the string.
249 * @return JSON response.
250 */
251 std::string createStringAttribute(const std::string &databaseId,
252 const std::string &collectionId,
253 const std::string &attributeId,
254 bool required,
255 const std::string &defaultValue,
256 const std::vector<std::string> &elements,
257 int size);
258
259 /**
260 * @brief Update a boolean attribute.
261 * @param databaseId Database ID.
262 * @param collectionId Collection ID.
263 * @param attributeId Attribute ID.
264 * @param defaultValue New default value.
265 * @param required Required field.
266 * @param new_key New key for the attribute.
267 * @return JSON response.
268 */
269 std::string updateBooleanAttribute(const std::string &databaseId,
270 const std::string &collectionId,
271 const std::string &attributeId,
272 bool defaultValue, bool required,
273 const std::string &new_key);
274
275 /**
276 * @brief Update an email attribute.
277 * @param databaseId Database ID.
278 * @param collectionId Collection ID.
279 * @param attributeId Attribute ID.
280 * @param required Required field.
281 * @param defaultValue New default email.
282 * @param new_key New key for the attribute.
283 * @return JSON response.
284 */
285 std::string updateEmailAttribute(const std::string &databaseId,
286 const std::string &collectionId,
287 const std::string &attributeId,
288 bool required,
289 const std::string &defaultValue,
290 std::string &new_key);
291
292 /**
293 * @brief Update an enum attribute.
294 * @param databaseId Database ID.
295 * @param collectionId Collection ID.
296 * @param attributeId Attribute ID.
297 * @param required Required field.
298 * @param defaultValue New default value.
299 * @param elements Allowed values.
300 * @param new_key New key for the attribute.
301 * @return JSON response.
302 */
303 std::string updateEnumAttribute(const std::string &databaseId,
304 const std::string &collectionId,
305 const std::string &attributeId,
306 bool required,
307 const std::string &defaultValue,
308 const std::vector<std::string> &elements,
309 std::string &new_key);
310
311 /**
312 * @brief Update a float attribute.
313 * @param databaseId Database ID.
314 * @param collectionId Collection ID.
315 * @param attributeId Attribute ID.
316 * @param required Required field.
317 * @param min Minimum value.
318 * @param max Maximum value.
319 * @param defaultValue New default value.
320 * @param new_key New key for the attribute.
321 * @return JSON response.
322 */
323 std::string updateFloatAttribute(const std::string &databaseId,
324 const std::string &collectionId,
325 const std::string &attributeId,
326 bool required, double min, double max,
327 const std::string &defaultValue,
328 std::string &new_key);
329
330 /**
331 * @brief Update an integer attribute.
332 * @param databaseId Database ID.
333 * @param collectionId Collection ID.
334 * @param attributeId Attribute ID.
335 * @param required Required field.
336 * @param min Minimum value.
337 * @param max Maximum value.
338 * @param defaultValue New default value.
339 * @param new_key New key for the attribute.
340 * @return JSON response.
341 */
342 std::string updateIntegerAttribute(const std::string &databaseId,
343 const std::string &collectionId,
344 const std::string &attributeId,
345 bool required, int min, int max,
346 const std::string &defaultValue,
347 std::string &new_key);
348
349 /**
350 * @brief Update an IP address attribute.
351 * @param databaseId Database ID.
352 * @param collectionId Collection ID.
353 * @param attributeId Attribute ID.
354 * @param required Required field.
355 * @param defaultValue New default IP address.
356 * @param new_key New key for the attribute.
357 * @return JSON response.
358 */
359 std::string updateIPaddressAttribute(const std::string &databaseId,
360 const std::string &collectionId,
361 const std::string &attributeId,
362 bool required,
363 const std::string &defaultValue,
364 const std::string &new_key);
365
366 /**
367 * @brief Update a string attribute.
368 * @param databaseId Database ID.
369 * @param collectionId Collection ID.
370 * @param attributeId Attribute ID.
371 * @param required Required field.
372 * @param defaultValue New default value.
373 * @param elements Allowed string values.
374 * @param size Maximum length.
375 * @param new_key New key for the attribute.
376 * @return JSON response.
377 */
378 std::string updateStringAttribute(const std::string &databaseId,
379 const std::string &collectionId,
380 const std::string &attributeId,
381 bool required,
382 const std::string &defaultValue,
383 const std::vector<std::string> &elements,
384 int size, std::string &new_key);
385
386 // ------------------- Document APIs -------------------
387
388 /**
389 * @brief Create a document in a collection.
390 * @param databaseId Database ID.
391 * @param collectionId Collection ID.
392 * @param documentId Document ID.
393 * @param rawData JSON string of document data.
394 * @return JSON response.
395 */
396 std::string createDocument(const std::string &databaseId,
397 const std::string &collectionId,
398 const std::string &documentId,
399 const std::string &rawData);
400
401 /**
402 * @brief List documents using queries.
403 * @param databaseId Database ID.
404 * @param collectionId Collection ID.
405 * @param queries Filter and sort queries.
406 * @return JSON string of documents.
407 */
408 std::string listDocument(const std::string &databaseId,
409 const std::string &collectionId, Queries &queries);
410
411 /**
412 * @brief Delete a document by ID.
413 * @param databaseId Database ID.
414 * @param collectionId Collection ID.
415 * @param documentId Document ID.
416 * @return JSON response.
417 */
418 std::string deleteDocument(const std::string &databaseId,
419 const std::string &collectionId,
420 const std::string &documentId);
421
422 /**
423 * @brief Get a document by ID.
424 * @param databaseId Database ID.
425 * @param collectionId Collection ID.
426 * @param documentId Document ID.
427 * @return JSON string of document.
428 */
429 std::string getDocument(const std::string &databaseId,
430 const std::string &collectionId,
431 const std::string &documentId);
432
433 // ------------------- Index APIs -------------------
434
435 /**
436 * @brief List all indexes in a collection.
437 * @param databaseId Database ID.
438 * @param collectionId Collection ID.
439 * @return JSON string of indexes.
440 */
441 std::string listIndexes(const std::string &databaseId,
442 const std::string &collectionId);
443
444 /**
445 * @brief Create a new index.
446 * @param databaseId Database ID.
447 * @param collectionId Collection ID.
448 * @param key Index key name.
449 * @param type Index type.
450 * @param attributes Fields to index.
451 * @return JSON response.
452 */
453 std::string createIndexes(const std::string &databaseId,
454 const std::string &collectionId,
455 const std::string &key, const std::string &type,
456 const std::vector<std::string> &attributes);
457
458 /**
459 * @brief Delete an index.
460 * @param databaseId Database ID.
461 * @param collectionId Collection ID.
462 * @param key Index key.
463 * @return JSON response.
464 */
465 std::string deleteIndexes(const std::string &databaseId,
466 const std::string &collectionId,
467 const std::string &key);
468
469 /**
470 * @brief Get details of an index.
471 * @param databaseId Database ID.
472 * @param collectionId Collection ID.
473 * @param key Index key.
474 * @return JSON string of index details.
475 */
476 std::string getIndexes(const std::string &databaseId,
477 const std::string &collectionId,
478 const std::string &key);
479
480 private:
481 std::string apiKey; ///< API key for Appwrite authentication
482 std::string projectId; ///< Appwrite project ID
483};
484
485#endif
Declares the base exception class used to represent Appwrite SDK errors.
Defines HTTP status code enums for consistent error and response handling.
Offers helper methods to construct query parameters for filtering and sorting API responses.
Provides utility functions and helpers used across the SDK.
Provides CRUD operations for databases, collections, documents, attributes, and indexes.
Definition Databases.hpp:19
std::string list()
List all databases.
std::string getCollection(const std::string &databaseId, const std::string &collectionId)
Get a collection by ID.
std::string createIntegerAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, int min, int max, const std::string &defaultValue)
Create an integer attribute.
std::string updateEmailAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue, std::string &new_key)
Update an email attribute.
std::string listAttributes(const std::string &databaseId, const std::string &collectionId)
List all attributes in a collection.
std::string getDocument(const std::string &databaseId, const std::string &collectionId, const std::string &documentId)
Get a document by ID.
std::string createFloatAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, double min, double max, const std::string &defaultValue)
Create a float attribute.
std::string createIPaddressAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue)
Create an IP address attribute.
std::string listIndexes(const std::string &databaseId, const std::string &collectionId)
List all indexes in a collection.
std::string updateBooleanAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool defaultValue, bool required, const std::string &new_key)
Update a boolean attribute.
std::string createDocument(const std::string &databaseId, const std::string &collectionId, const std::string &documentId, const std::string &rawData)
Create a document in a collection.
std::string create(const std::string &databaseId, const std::string &name, bool enabled)
Create a new database.
std::string updateFloatAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, double min, double max, const std::string &defaultValue, std::string &new_key)
Update a float attribute.
std::string updateEnumAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue, const std::vector< std::string > &elements, std::string &new_key)
Update an enum attribute.
std::string createBooleanAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool defaultValue, bool required)
Create a boolean attribute.
std::string deleteIndexes(const std::string &databaseId, const std::string &collectionId, const std::string &key)
Delete an index.
std::string getIndexes(const std::string &databaseId, const std::string &collectionId, const std::string &key)
Get details of an index.
std::string update(const std::string &databaseId, const std::string &name, bool enabled)
Update an existing database.
std::string deleteDocument(const std::string &databaseId, const std::string &collectionId, const std::string &documentId)
Delete a document by ID.
std::string createEmailAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue)
Create an email attribute.
std::string updateStringAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue, const std::vector< std::string > &elements, int size, std::string &new_key)
Update a string attribute.
std::string createEnumAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue, const std::vector< std::string > &elements)
Create an enum attribute.
std::string listCollection(const std::string &databaseId)
List all collections in a database.
std::string get(const std::string &databaseId)
Get a database by ID.
std::string updateIntegerAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, int min, int max, const std::string &defaultValue, std::string &new_key)
Update an integer attribute.
std::string createStringAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue, const std::vector< std::string > &elements, int size)
Create a string attribute.
std::string createCollection(const std::string &databaseId, const std::string &collectionId, const std::string &name, bool enabled)
Create a new collection.
std::string updateIPaddressAttribute(const std::string &databaseId, const std::string &collectionId, const std::string &attributeId, bool required, const std::string &defaultValue, const std::string &new_key)
Update an IP address attribute.
std::string updateCollection(const std::string &databaseId, const std::string &collectionId, const std::string &name, bool enabled)
Update collection metadata.
Databases(const std::string &projectId, const std::string &apiKey)
Constructor for Databases class.
std::string deleteCollection(const std::string &databaseId, const std::string &collectionId)
Delete a collection by ID.
std::string listDocument(const std::string &databaseId, const std::string &collectionId, Queries &queries)
List documents using queries.
std::string getDatabaseUsage(const std::string &databaseId, const std::string &range)
Get usage statistics of a database.
std::string createIndexes(const std::string &databaseId, const std::string &collectionId, const std::string &key, const std::string &type, const std::vector< std::string > &attributes)
Create a new index.
std::string getCollectionUsage(const std::string &databaseId, const std::string &collectionId, const std::string &range)
Get usage stats of a collection.
Utility class to construct and manage Appwrite-style database query filters.
Definition Query.hpp:24