Merge remote-tracking branch 'origin/1.8.x' into documents-db-api

This commit is contained in:
ArnabChatterjee20k
2026-02-23 13:07:36 +05:30
14 changed files with 82 additions and 26 deletions
+7 -7
View File
@@ -11,7 +11,7 @@ return [
[
'key' => 'web',
'name' => 'Web',
'version' => '22.3.1',
'version' => '22.4.0',
'url' => 'https://github.com/appwrite/sdk-for-web',
'package' => 'https://www.npmjs.com/package/appwrite',
'enabled' => true,
@@ -60,7 +60,7 @@ return [
[
'key' => 'flutter',
'name' => 'Flutter',
'version' => '21.1.0',
'version' => '21.4.0',
'url' => 'https://github.com/appwrite/sdk-for-flutter',
'package' => 'https://pub.dev/packages/appwrite',
'enabled' => true,
@@ -79,7 +79,7 @@ return [
[
'key' => 'apple',
'name' => 'Apple',
'version' => '14.1.0',
'version' => '14.3.0',
'url' => 'https://github.com/appwrite/sdk-for-apple',
'package' => 'https://github.com/appwrite/sdk-for-apple',
'enabled' => true,
@@ -117,7 +117,7 @@ return [
'key' => 'android',
'name' => 'Android',
'namespace' => 'io.appwrite',
'version' => '12.1.0',
'version' => '12.2.0',
'url' => 'https://github.com/appwrite/sdk-for-android',
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-android',
'enabled' => true,
@@ -140,7 +140,7 @@ return [
[
'key' => 'react-native',
'name' => 'React Native',
'version' => '0.23.1',
'version' => '0.24.0',
'url' => 'https://github.com/appwrite/sdk-for-react-native',
'package' => 'https://npmjs.com/package/react-native-appwrite',
'enabled' => true,
@@ -208,7 +208,7 @@ return [
[
'key' => 'web',
'name' => 'Console',
'version' => '0.3.0',
'version' => '22.4.0',
'url' => '',
'package' => '',
'enabled' => true,
@@ -227,7 +227,7 @@ return [
[
'key' => 'cli',
'name' => 'Command Line',
'version' => '13.4.0',
'version' => '13.5.0',
'url' => 'https://github.com/appwrite/sdk-for-cli',
'package' => 'https://www.npmjs.com/package/appwrite-cli',
'enabled' => true,
+3
View File
@@ -36,6 +36,9 @@ $createGitDeployments = function (GitHub $github, string $providerInstallationId
$projectId = $repository->getAttribute('projectId');
$project = $authorization->skip(fn () => $dbForPlatform->getDocument('projects', $projectId));
if ($project->isEmpty()) {
throw new Exception(Exception::PROJECT_NOT_FOUND, 'Repository references non-existent project');
}
$dbForProject = $getProjectDB($project);
$resourceCollection = $resourceType === "function" ? 'functions' : 'sites';
+1 -1
View File
@@ -343,7 +343,7 @@ Http::init()
* But, for actions on resources (sites, functions, etc.) in a non-console project, we explicitly check
* whether the admin user has necessary permission on the project (sites, functions, etc. don't have permissions associated to them).
*/
if (empty($apiKey) && $project->getId() !== 'console' && $mode === APP_MODE_ADMIN) {
if (empty($apiKey) && !$user->isEmpty() && $project->getId() !== 'console' && $mode === APP_MODE_ADMIN) {
$input = new Input(Database::PERMISSION_READ, $project->getPermissionsByType(Database::PERMISSION_READ));
$initialStatus = $authorization->getStatus();
$authorization->enable();
+14 -4
View File
@@ -568,11 +568,16 @@ Http::setResource('dbForProject', function (Group $pools, Database $dbForPlatfor
return $dbForPlatform;
}
$database = $project->getAttribute('database', '');
if (empty($database)) {
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Project database is not configured');
}
try {
$dsn = new DSN($project->getAttribute('database'));
$dsn = new DSN($database);
} catch (\InvalidArgumentException) {
// TODO: Temporary until all projects are using shared tables
$dsn = new DSN('mysql://' . $project->getAttribute('database'));
$dsn = new DSN('mysql://' . $database);
}
$adapter = new DatabasePool($pools->get($dsn->getHost()));
@@ -1129,11 +1134,16 @@ Http::setResource('getProjectDB', function (Group $pools, Database $dbForPlatfor
return $dbForPlatform;
}
$database = $project->getAttribute('database', '');
if (empty($database)) {
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Project database is not configured');
}
try {
$dsn = new DSN($project->getAttribute('database'));
$dsn = new DSN($database);
} catch (\InvalidArgumentException) {
// TODO: Temporary until all projects are using shared tables
$dsn = new DSN('mysql://' . $project->getAttribute('database'));
$dsn = new DSN('mysql://' . $database);
}
$configure = (function (Database $database) use ($project, $dsn, $authorization) {
Generated
+5 -14
View File
@@ -5486,7 +5486,7 @@
"issues": "https://github.com/appwrite/sdk-generator/issues",
"source": "https://github.com/appwrite/sdk-generator/tree/1.10.2"
},
"time": "2026-02-23T04:04:15+00:00"
"time": "2026-02-17T11:48:05+00:00"
},
{
"name": "doctrine/annotations",
@@ -8937,19 +8937,10 @@
"time": "2024-03-07T20:33:40+00:00"
}
],
"aliases": [
{
"package": "utopia-php/migration",
"version": "dev-improve-columns-setup",
"alias": "1.6.1",
"alias_normalized": "1.6.1.0"
}
],
"minimum-stability": "dev",
"stability-flags": {
"utopia-php/migration": 20
},
"prefer-stable": true,
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=8.3.0",
@@ -0,0 +1,7 @@
```bash
appwrite projects create-schedule \
--project-id <PROJECT_ID> \
--resource-type function \
--resource-id <RESOURCE_ID> \
--schedule ''
```
@@ -0,0 +1,5 @@
```bash
appwrite projects get-schedule \
--project-id <PROJECT_ID> \
--schedule-id <SCHEDULE_ID>
```
@@ -0,0 +1,4 @@
```bash
appwrite projects list-schedules \
--project-id <PROJECT_ID>
```
+6
View File
@@ -1,5 +1,11 @@
# Change Log
## 12.2.0
* Added Channel<_Document>.upsert() and Channel<_Row>.upsert() API methods to upsert documents and rows in channels.
* Added new query filters: containsAny(attribute, List<Any>) and containsAll(attribute, List<Any>) for advanced matching on array/relationship attributes.
* Realtime improvements: improved WebSocket lifecycle and connection handling. Introduced generation-based checks to avoid processing messages from stale sockets and ensure sequential socket recreation on reconnects.
## 12.1.0
* Add `queries` parameter to Realtime subscriptions for filtering events
+6
View File
@@ -1,5 +1,11 @@
# Change Log
## 14.3.0
* Added upsert() support for RealtimeChannel on both Document and Row variants to perform upsert operations over real-time channels.
* Introduced new Query filter methods: contains(_:, value:), containsAny(_:, value: [Any]), containsAll(_:, value: [Any]) for enhanced querying capabilities (substring and multi-value containment).
* Documentation and packaging updates to align with the new release: README dependency example updated from 14.2.0 to 14.1.0, and server compatibility note updated to indicate Appwrite server version 1.8.x compatibility.
## 14.1.0
* Add `queries` parameter to Realtime subscriptions for filtering events
+5
View File
@@ -1,5 +1,10 @@
# Change Log
## 13.5.0
* New: Added CLI commands under projects: `list-schedules`, `create-schedule`, and `get-schedule` for managing project schedules.
* Packaging/build: Updated packaging to support explicit ESM/CJS outputs with exports. main now points to dist/index.cjs, module to dist/index.js, and exports include type and entry-point mappings. This enables better compatibility for both ESM and CommonJS users.
## 13.4.0
* Add `--queries` option to `list-keys` command
+9
View File
@@ -1,5 +1,14 @@
# Change Log
## 21.4.0
* Added upsert() to DocumentChannel and RowChannel to support upsert operations on documents and rows.
* Added Query.contains, Query.containsAny, and Query.containsAll for enhanced filtering capabilities.
## 21.3.0
* Added memberships realtime channel helper
## 21.1.0
* Add `queries` parameter to Realtime subscriptions for filtering events
+4
View File
@@ -1,5 +1,9 @@
# Change log
## 0.24.0
* Added Query.contains, Query.containsAny, and Query.containsAll for enhanced filtering capabilities.
## 0.23.1
* Add `upsert` method to Realtime `Channels` helper class
+6
View File
@@ -1,5 +1,11 @@
# Change Log
## 22.4.0
* Added Query.containsAny(attribute, value[]) to filter resources where the attribute contains any of the given values.
* Added Query.containsAll(attribute, value[]) to filter resources where the attribute contains all of the given values.
* Updated Query.contains documentation to clarify behavior: string attributes are matched by substring, and for array attributes use containsAny/containsAll.
## 22.3.1
* Add `upsert` method to Realtime `Channels` helper class