import 'package:dio/dio.dart'; import 'package:meta/meta.dart'; import "../client.dart"; import '../enums.dart'; import "../service.dart"; class Database extends Service { Database(Client client): super(client); /// List Documents /// /// Get a list of all the user documents. You can use the query params to /// filter your results. On admin mode, this endpoint will return a list of all /// of the project documents. [Learn more about different API /// modes](/docs/admin). /// Future listDocuments({@required String collectionId, List filters = const [], int offset = 0, int limit = 50, String orderField = '\$id', OrderType orderType = OrderType.asc, String orderCast = 'string', String search = '', int first = 0, int last = 0}) { final String path = '/database/collections/{collectionId}/documents'.replaceAll(RegExp('{collectionId}'), collectionId); final Map params = { 'filters': filters, 'offset': offset, 'limit': limit, 'orderField': orderField, 'orderType': orderType.name(), 'orderCast': orderCast, 'search': search, 'first': first, 'last': last, }; final Map headers = { 'content-type': 'application/json', }; return client.call(HttpMethod.get, path: path, params: params, headers: headers); } /// Create Document /// /// Create a new Document. Before using this route, you should create a new /// collection resource using either a [server /// integration](/docs/server/database?sdk=nodejs#createCollection) API or /// directly from your database console. /// Future createDocument({@required String collectionId, @required dynamic data, @required List read, @required List write, String parentDocument = '', String parentProperty = '', String parentPropertyType = 'assign'}) { final String path = '/database/collections/{collectionId}/documents'.replaceAll(RegExp('{collectionId}'), collectionId); final Map params = { 'data': data, 'read': read, 'write': write, 'parentDocument': parentDocument, 'parentProperty': parentProperty, 'parentPropertyType': parentPropertyType, }; final Map headers = { 'content-type': 'application/json', }; return client.call(HttpMethod.post, path: path, params: params, headers: headers); } /// Get Document /// /// Get document by its unique ID. This endpoint response returns a JSON object /// with the document data. /// Future getDocument({@required String collectionId, @required String documentId}) { final String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId); final Map params = { }; final Map headers = { 'content-type': 'application/json', }; return client.call(HttpMethod.get, path: path, params: params, headers: headers); } /// Update Document Future updateDocument({@required String collectionId, @required String documentId, @required dynamic data, @required List read, @required List write}) { final String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId); final Map params = { 'data': data, 'read': read, 'write': write, }; final Map headers = { 'content-type': 'application/json', }; return client.call(HttpMethod.patch, path: path, params: params, headers: headers); } /// Delete Document /// /// Delete document by its unique ID. This endpoint deletes only the parent /// documents, his attributes and relations to other documents. Child documents /// **will not** be deleted. /// Future deleteDocument({@required String collectionId, @required String documentId}) { final String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId); final Map params = { }; final Map headers = { 'content-type': 'application/json', }; return client.call(HttpMethod.delete, path: path, params: params, headers: headers); } }