diff --git a/README.md b/README.md index 8ad58e57..bba49076 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Add this to your package's `pubspec.yaml` file: ```yml dependencies: - appwrite: ^19.1.0 + appwrite: ^20.0.0 ``` You can install packages from the command line: diff --git a/lib/enums.dart b/lib/enums.dart index 426e3a68..1559bafb 100644 --- a/lib/enums.dart +++ b/lib/enums.dart @@ -10,3 +10,5 @@ part 'src/enums/flag.dart'; part 'src/enums/execution_method.dart'; part 'src/enums/image_gravity.dart'; part 'src/enums/image_format.dart'; +part 'src/enums/execution_trigger.dart'; +part 'src/enums/execution_status.dart'; diff --git a/lib/models.dart b/lib/models.dart index d4fae416..b5aad7f7 100644 --- a/lib/models.dart +++ b/lib/models.dart @@ -1,6 +1,8 @@ /// Appwrite Models library appwrite.models; +import 'enums.dart' as enums; + part 'src/models/model.dart'; part 'src/models/row_list.dart'; part 'src/models/document_list.dart'; diff --git a/lib/src/client_browser.dart b/lib/src/client_browser.dart index fbd51895..c8083904 100644 --- a/lib/src/client_browser.dart +++ b/lib/src/client_browser.dart @@ -40,7 +40,7 @@ class ClientBrowser extends ClientBase with ClientMixin { 'x-sdk-name': 'Flutter', 'x-sdk-platform': 'client', 'x-sdk-language': 'flutter', - 'x-sdk-version': '19.1.0', + 'x-sdk-version': '20.0.0', 'X-Appwrite-Response-Format': '1.8.0', }; diff --git a/lib/src/client_io.dart b/lib/src/client_io.dart index ec8b49a3..981a7c65 100644 --- a/lib/src/client_io.dart +++ b/lib/src/client_io.dart @@ -58,7 +58,7 @@ class ClientIO extends ClientBase with ClientMixin { 'x-sdk-name': 'Flutter', 'x-sdk-platform': 'client', 'x-sdk-language': 'flutter', - 'x-sdk-version': '19.1.0', + 'x-sdk-version': '20.0.0', 'X-Appwrite-Response-Format': '1.8.0', }; diff --git a/lib/src/enums/execution_status.dart b/lib/src/enums/execution_status.dart new file mode 100644 index 00000000..7e793cce --- /dev/null +++ b/lib/src/enums/execution_status.dart @@ -0,0 +1,14 @@ +part of '../../enums.dart'; + +enum ExecutionStatus { + waiting(value: 'waiting'), + processing(value: 'processing'), + completed(value: 'completed'), + failed(value: 'failed'); + + const ExecutionStatus({required this.value}); + + final String value; + + String toJson() => value; +} diff --git a/lib/src/enums/execution_trigger.dart b/lib/src/enums/execution_trigger.dart new file mode 100644 index 00000000..fb05eb7d --- /dev/null +++ b/lib/src/enums/execution_trigger.dart @@ -0,0 +1,13 @@ +part of '../../enums.dart'; + +enum ExecutionTrigger { + http(value: 'http'), + schedule(value: 'schedule'), + event(value: 'event'); + + const ExecutionTrigger({required this.value}); + + final String value; + + String toJson() => value; +} diff --git a/lib/src/models/document.dart b/lib/src/models/document.dart index cf85e457..06733467 100644 --- a/lib/src/models/document.dart +++ b/lib/src/models/document.dart @@ -45,7 +45,7 @@ class Document implements Model { $createdAt: map['\$createdAt'].toString(), $updatedAt: map['\$updatedAt'].toString(), $permissions: List.from(map['\$permissions'] ?? []), - data: map, + data: map["data"] ?? map, ); } diff --git a/lib/src/models/execution.dart b/lib/src/models/execution.dart index 0da5c52f..4b4830eb 100644 --- a/lib/src/models/execution.dart +++ b/lib/src/models/execution.dart @@ -21,10 +21,10 @@ class Execution implements Model { final String deploymentId; /// The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`. - final String trigger; + final enums.ExecutionTrigger trigger; /// The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`. - final String status; + final enums.ExecutionStatus status; /// HTTP request method type. final String requestMethod; @@ -85,8 +85,12 @@ class Execution implements Model { $permissions: List.from(map['\$permissions'] ?? []), functionId: map['functionId'].toString(), deploymentId: map['deploymentId'].toString(), - trigger: map['trigger'].toString(), - status: map['status'].toString(), + trigger: enums.ExecutionTrigger.values.firstWhere( + (e) => e.value == map['trigger'], + ), + status: enums.ExecutionStatus.values.firstWhere( + (e) => e.value == map['status'], + ), requestMethod: map['requestMethod'].toString(), requestPath: map['requestPath'].toString(), requestHeaders: List.from( @@ -112,8 +116,8 @@ class Execution implements Model { "\$permissions": $permissions, "functionId": functionId, "deploymentId": deploymentId, - "trigger": trigger, - "status": status, + "trigger": trigger.value, + "status": status.value, "requestMethod": requestMethod, "requestPath": requestPath, "requestHeaders": requestHeaders.map((p) => p.toMap()).toList(), diff --git a/lib/src/models/preferences.dart b/lib/src/models/preferences.dart index 7bc3abc9..777f5925 100644 --- a/lib/src/models/preferences.dart +++ b/lib/src/models/preferences.dart @@ -7,7 +7,7 @@ class Preferences implements Model { Preferences({required this.data}); factory Preferences.fromMap(Map map) { - return Preferences(data: map); + return Preferences(data: map["data"] ?? map); } Map toMap() { diff --git a/lib/src/models/row.dart b/lib/src/models/row.dart index 3700e577..6dfddd27 100644 --- a/lib/src/models/row.dart +++ b/lib/src/models/row.dart @@ -45,7 +45,7 @@ class Row implements Model { $createdAt: map['\$createdAt'].toString(), $updatedAt: map['\$updatedAt'].toString(), $permissions: List.from(map['\$permissions'] ?? []), - data: map, + data: map["data"] ?? map, ); } diff --git a/pubspec.yaml b/pubspec.yaml index f6fa4f09..b488c68a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: appwrite -version: 19.1.0 +version: 20.0.0 description: Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API homepage: https://appwrite.io repository: https://github.com/appwrite/sdk-for-flutter diff --git a/test/src/models/execution_test.dart b/test/src/models/execution_test.dart index ed6fb8e2..6d9bf33c 100644 --- a/test/src/models/execution_test.dart +++ b/test/src/models/execution_test.dart @@ -1,4 +1,5 @@ import 'package:appwrite/models.dart'; +import 'package:appwrite/enums.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { @@ -11,8 +12,8 @@ void main() { $permissions: [], functionId: '5e5ea6g16897e', deploymentId: '5e5ea5c16897e', - trigger: 'http', - status: 'processing', + trigger: ExecutionTrigger.http, + status: ExecutionStatus.waiting, requestMethod: 'GET', requestPath: '/articles?id=5', requestHeaders: [], @@ -33,8 +34,8 @@ void main() { expect(result.$permissions, []); expect(result.functionId, '5e5ea6g16897e'); expect(result.deploymentId, '5e5ea5c16897e'); - expect(result.trigger, 'http'); - expect(result.status, 'processing'); + expect(result.trigger, ExecutionTrigger.http); + expect(result.status, ExecutionStatus.waiting); expect(result.requestMethod, 'GET'); expect(result.requestPath, '/articles?id=5'); expect(result.requestHeaders, []);