Compare commits

...
Author SHA1 Message Date
Matej Bačo b625bdb189 Formatting fix 2026-02-11 17:25:44 +01:00
Matej Bačo 5ac58e7723 Implement team sequence 2026-02-11 17:25:17 +01:00
Chirag AggarwalandGitHub 435af97db1 Merge pull request #11297 from appwrite/fix/origin-validator-type-error
fix: Fix TypeError in Origin validator when array is passed
2026-02-11 18:20:32 +05:30
Chirag AggarwalandGitHub 781512cf88 Merge pull request #11295 from appwrite/release-cli-13.3.2
chore: release cli 13.3.2
2026-02-11 18:11:59 +05:30
Chirag Aggarwal 1a966741f4 (fix): Fix TypeError in Origin validator when array is passed
Move type check before assignment to prevent TypeError when non-string
value (like array) is passed to Origin::isValid(). The property
\$this->origin is typed as string, so assigning an array before
the is_string() check caused the error.
2026-02-11 18:01:18 +05:30
Chirag Aggarwal bb56c9a91e Merge branch '1.8.x' into release-cli-13.3.2 2026-02-11 17:24:38 +05:30
Chirag AggarwalandGitHub 942b90cb2a Merge pull request #11283 from appwrite/fix/cli-static-setresource
Upgrade utopia-php dependencies and fix namespace changes
2026-02-11 17:16:54 +05:30
Chirag AggarwalandGitHub 351cd569cf Merge pull request #11296 from appwrite/chore/add-php-retry-tests-workflow
chore(ci): add php-retry for all tests in tests workflow
2026-02-11 16:57:00 +05:30
Chirag Aggarwal b243404a71 chore(ci): add PR comment permissions to retry jobs 2026-02-11 16:53:25 +05:30
Chirag Aggarwal dcb759e3fe chore(ci): restore retry job metadata inputs 2026-02-11 16:49:59 +05:30
Chirag Aggarwal 5371aa6820 chore(ci): add php-retry to tests workflow 2026-02-11 16:30:29 +05:30
Chirag Aggarwal f7f97cdb33 chore: release cli 13.3.2 2026-02-11 16:16:59 +05:30
Chirag Aggarwal 61c5374134 remove orchestration 2026-02-11 16:04:20 +05:30
Chirag Aggarwal 45f4b1e8ad Merge branch '1.8.x' into fix/cli-static-setresource 2026-02-11 16:04:14 +05:30
Jake BarnbyandGitHub 465d21badd Merge pull request #11293 from appwrite/feat-pg-adapter 2026-02-11 10:15:58 +00:00
Chirag Aggarwal a2dc62d4e5 fix 2026-02-11 15:20:30 +05:30
Jake BarnbyandGitHub 308609a0a2 Merge branch '1.8.x' into feat-pg-adapter 2026-02-11 08:34:45 +00:00
Jake BarnbyandGitHub f631fba124 Merge pull request #11270 from appwrite/fix-invalid-chunktotal 2026-02-11 08:21:31 +00:00
Jake BarnbyandClaude Opus 4.6 bc69154024 fix: add retry logic to helperGetLatestCommit for GitHub API rate limits
The testCreateSiteFromTemplateCommit test fails intermittently when the
unauthenticated GitHub API call gets rate limited, returning null. Added
3 retries with 5s delay to handle transient failures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 20:39:21 +13:00
Jake BarnbyandGitHub 2d76fcced1 Merge pull request #11272 from appwrite/realtime-query-reserved-channels 2026-02-11 07:09:28 +00:00
Jake BarnbyandClaude Opus 4.6 32c617a149 fix: remove invalid YAML condition syntax in docker-compose.yml
The appwrite-worker-functions depends_on section mixed list format
(- redis) with mapping format (condition: service_healthy), causing
a YAML parse error at line 696 that prevented docker compose from
starting, failing all CI checks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 20:02:36 +13:00
Jake BarnbyandGitHub 8861a489ec Merge pull request #9772 from ArnabChatterjee20k/pg-adapter 2026-02-11 06:41:59 +00:00
Chirag AggarwalandGitHub b2f4c4227e Merge branch '1.8.x' into fix/cli-static-setresource 2026-02-11 12:10:35 +05:30
Chirag Aggarwal 33cb992934 bump all to stable 2026-02-11 12:07:36 +05:30
Jake BarnbyandGitHub 2fc7074908 Merge branch '1.8.x' into pg-adapter 2026-02-11 06:35:14 +00:00
Jake BarnbyandGitHub 00fdf76d71 Update docker-compose.yml 2026-02-11 19:34:59 +13:00
Jake BarnbyandGitHub 1dec34cc2d Update docker-compose.yml 2026-02-11 19:34:49 +13:00
Jake BarnbyandGitHub b08e0ad8ac Update app/config/variables.php 2026-02-11 19:34:38 +13:00
Chirag Aggarwal fed9af7568 remove console dev branch 2026-02-11 12:03:12 +05:30
Chirag AggarwalandGitHub 64fff8f26b Merge pull request #11292 from appwrite/fix/oauth-redirect-custom-scheme
Fix OAuth redirect for custom scheme state
2026-02-11 12:00:37 +05:30
Jake BarnbyandGitHub efaf23d1a3 Merge pull request #11261 from appwrite/export-stats-revert 2026-02-11 06:27:35 +00:00
Chirag Aggarwal 161b971f53 Fix oauth redirect custom scheme state 2026-02-11 10:11:04 +05:30
HemachandarandGitHub 1822ede19e Fix GitHub error file path (#11289)
* Fix error file path in GitHub APIs

* const
2026-02-10 21:21:48 +05:30
Chirag Aggarwal 7c5fc442f1 retry 2026-02-10 17:38:52 +05:30
Chirag Aggarwal d74704e10b composer 2026-02-10 16:26:26 +05:30
Chirag Aggarwal 99d8eefdcf fix class issue 2026-02-10 12:41:59 +05:30
Chirag Aggarwal 73b19b9028 ordering 2026-02-10 12:19:47 +05:30
Chirag AggarwalandGitHub c7d4314498 Merge branch '1.8.x' into fix/cli-static-setresource 2026-02-10 12:19:31 +05:30
Chirag Aggarwal 0fd93f4097 chore try fix console execute 2026-02-10 12:17:49 +05:30
Chirag Aggarwal a80209ddbd fix cookie parsing 2026-02-10 11:45:10 +05:30
Chirag Aggarwal 63a6714e31 fix import 2026-02-10 10:56:13 +05:30
Chirag Aggarwal 2d05d608f4 Upgrade utopia-php dependencies and fix namespace changes
- Upgrade utopia-php/cli from 0.15 to 0.22
- Upgrade utopia-php/analytics from 0.10 to 0.15
- Upgrade utopia-php/orchestration from 0.9 to 0.19
- Use dev branches for utopia-php/framework and utopia-php/platform
- Remove utopia-php/swoole dependency (merged into framework)
- Migrate Utopia\CLI\Console to Utopia\Console across all files
- Migrate Utopia\Http to Utopia\Http\Http namespace
- Migrate Utopia\Swoole\Files to Utopia\Http\Files (now instance-based)
- Convert static CLI::setResource() calls to instance-based Dependency API
- Fix StatsResources task named parameter mismatch
2026-02-10 10:34:24 +05:30
Chirag Aggarwal c551fda8d8 Fix CLI setResource() static calls and named parameter mismatch
CLI::setResource() is no longer static in the updated utopia-php/cli
library. Moved platform/CLI initialization before resource setup and
converted all static CLI::setResource() calls to use Dependency-based
instance method via a helper closure. Also renamed $queue to
$queueForStatsResources in StatsResources task to match the injected
resource name, fixing PHP 8 named parameter resolution.
2026-02-10 10:33:14 +05:30
ArnabChatterjee20kandGitHub efd6951764 Merge branch '1.8.x' into pg-adapter 2026-02-09 14:16:06 +05:30
ArnabChatterjee20kandGitHub f13cda7e9f Merge branch '1.8.x' into export-stats-revert 2026-02-09 13:47:02 +05:30
ArnabChatterjee20k 6afb5ccf10 updated the comments 2026-02-09 13:08:02 +05:30
ArnabChatterjee20k 4b3c4323ee Enhance reserved parameter handling in Realtime adapter and update related tests 2026-02-09 13:07:11 +05:30
ArnabChatterjee20k ecea1a580d updated channels 2026-02-09 12:02:01 +05:30
ArnabChatterjee20k 842c274d02 updated tests 2026-02-09 11:55:39 +05:30
ArnabChatterjee20k 81f4d10ad6 Enhance Realtime channel handling for project queries and improve test coverage 2026-02-09 11:48:04 +05:30
Damodar Lohani 3c78f78ea9 Fix: chunk upload handling for single chunk uploads 2026-02-09 02:54:40 +00:00
ArnabChatterjee20k 7faf14769f added metric documents 2026-02-06 19:10:00 +05:30
ArnabChatterjee20k 96532b9725 linting 2026-02-06 18:47:22 +05:30
Jake BarnbyandArnabChatterjee20k a3574032e3 Update src/Appwrite/Platform/Workers/Migrations.php 2026-02-06 12:27:10 +05:30
ArnabChatterjee20k 6c38c566d9 optimised the memory usage by resource aggregation 2026-02-06 12:27:09 +05:30
ArnabChatterjee20k 7997763532 linting 2026-02-06 12:26:35 +05:30
ArnabChatterjee20k bf84144201 updated reset of the stats usage worker to reset metrics 2026-02-06 12:25:59 +05:30
ArnabChatterjee20k 532ec364d2 updated migration version 2026-02-06 12:25:53 +05:30
ArnabChatterjee20k b517e502a9 lint 2026-02-06 12:25:38 +05:30
ArnabChatterjee20k 4396a0ef7e added processing of migration resource stats 2026-02-06 12:24:41 +05:30
ArnabChatterjee20k 6eaebaec1b updated compose 2026-02-06 11:49:41 +05:30
ArnabChatterjee20k 88e2d5c496 updated compose 2026-02-06 11:44:44 +05:30
ArnabChatterjee20k e3aaac7f9f Merge remote-tracking branch 'origin/1.8.x' into pg-adapter 2026-02-06 11:35:38 +05:30
ArnabChatterjee20k 74dcfc28c7 removed duplicate postgresql from pool 2025-12-29 17:17:04 +05:30
ArnabChatterjee20k ee35322db6 Merge remote-tracking branch 'upstream/1.8.x' into pg-adapter 2025-12-29 16:56:02 +05:30
ArnabChatterjee20k b5200ca840 Merge remote-tracking branch 'origin/pg-adapter' into pg-adapter 2025-12-29 16:52:40 +05:30
ArnabChatterjee20k 15a76e5984 updated depends on to the host instead of adapter and changed to the grouping of env vars 2025-06-18 18:09:52 +05:30
ArnabChatterjee20k bf0bb1e2f6 updated tests yml 2025-06-18 18:09:52 +05:30
ArnabChatterjee20k a0c974df42 updated updating database in the installation 2025-06-18 18:09:52 +05:30
ArnabChatterjee20k cce830e103 added _APP_DB_ADAPTER 2025-06-18 18:09:52 +05:30
ArnabChatterjee20k ba3413526d removed trailing comma from the matrix db adapter of the test 2025-06-18 18:09:52 +05:30
ArnabChatterjee20k d0a45d6d1b changed the depends on to scheme 2025-06-18 18:09:52 +05:30
ArnabChatterjee20k c63ae1832a updated local docker for ci test on github actions and tests yml 2025-06-18 18:09:52 +05:30
ArnabChatterjee20k d810fb417a added upgrade limit for db 2025-06-18 18:09:29 +05:30
ArnabChatterjee20k f3d8478312 updated the environment of the services in the docker compose of install 2025-06-18 18:09:29 +05:30
ArnabChatterjee20k 0452ed4605 added changes 2025-06-18 18:09:29 +05:30
ArnabChatterjee20k e6f8055f60 added the callable resource in the pg adapter 2025-06-18 18:09:11 +05:30
ArnabChatterjee20k f18fbc792e used env var in the registers for the pool 2025-06-18 18:09:11 +05:30
ArnabChatterjee20k 3cb0894091 added conditonal for .env for mariadb and psotgres 2025-06-18 18:09:11 +05:30
ArnabChatterjee20k b5a82109f1 linting 2025-06-18 18:09:11 +05:30
ArnabChatterjee20k dee9736c8a updated compose file and installation script 2025-06-18 18:09:11 +05:30
ArnabChatterjee20k 8048a82a5d add postges installtion command 2025-06-18 18:09:11 +05:30
ArnabChatterjee20k be1e52529a updated depends on to the host instead of adapter and changed to the grouping of env vars 2025-05-27 22:07:49 +05:30
ArnabChatterjee20k f1b2ac0d13 updated tests yml 2025-05-21 18:22:16 +05:30
ArnabChatterjee20k e7f51023bf updated updating database in the installation 2025-05-21 18:13:20 +05:30
ArnabChatterjee20k f5c54bb945 added _APP_DB_ADAPTER 2025-05-21 17:36:50 +05:30
ArnabChatterjee20k 58e04b4950 removed trailing comma from the matrix db adapter of the test 2025-05-20 19:01:44 +05:30
ArnabChatterjee20kandGitHub 9ca6527816 Merge branch 'main' into pg-adapter 2025-05-20 16:56:46 +05:30
ArnabChatterjee20k 60be48268c changed the depends on to scheme 2025-05-20 15:35:12 +05:30
ArnabChatterjee20k e45befbdf2 updated local docker for ci test on github actions and tests yml 2025-05-20 14:46:50 +05:30
ArnabChatterjee20k f2ed0346df Merge branch 'main' into pg-adapter 2025-05-19 11:22:14 +05:30
ArnabChatterjee20k e88aebd4ad added upgrade limit for db 2025-05-17 00:05:11 +05:30
ArnabChatterjee20k e1207caee0 updated the environment of the services in the docker compose of install 2025-05-16 23:33:21 +05:30
ArnabChatterjee20k 78de031c74 added changes 2025-05-16 21:07:47 +05:30
ArnabChatterjee20kandGitHub b775a546c8 Merge branch '1.6.x' into pg-adapter 2025-05-16 20:11:18 +05:30
ArnabChatterjee20k 2460f0cb36 updated composer lock 2025-05-16 19:50:42 +05:30
ArnabChatterjee20k 9f22ab4ef5 added the callable resource in the pg adapter 2025-05-16 18:07:17 +05:30
ArnabChatterjee20k 26c3248375 used env var in the registers for the pool 2025-05-16 17:53:44 +05:30
ArnabChatterjee20k 5f7afa25ce added conditonal for .env for mariadb and psotgres 2025-05-16 17:01:18 +05:30
ArnabChatterjee20k f846e417fc linting 2025-05-16 16:19:37 +05:30
ArnabChatterjee20k 083e490cc2 updated compose file and installation script 2025-05-16 16:19:20 +05:30
ArnabChatterjee20k bfdcd13f80 add postges installtion command 2025-05-16 14:11:45 +05:30
267 changed files with 1283 additions and 704 deletions
+1
View File
@@ -38,6 +38,7 @@ _APP_REDIS_HOST=redis
_APP_REDIS_PORT=6379
_APP_REDIS_PASS=
_APP_REDIS_USER=
_APP_DB_ADAPTER=mariadb
_APP_DB_HOST=mariadb
_APP_DB_PORT=3306
_APP_DB_SCHEMA=appwrite
+188 -82
View File
@@ -80,6 +80,9 @@ jobs:
name: Unit Test
runs-on: ubuntu-latest
needs: setup
permissions:
contents: read
pull-requests: write
steps:
- name: checkout
@@ -108,15 +111,25 @@ jobs:
run: docker compose exec -T appwrite vars
- name: Run Unit Tests
run: |
docker compose exec \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/unit
command: >-
docker compose exec
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
appwrite test /usr/src/code/tests/unit
e2e_general_test:
name: E2E General Test
runs-on: ubuntu-latest
needs: setup
permissions:
contents: read
pull-requests: write
steps:
- name: checkout
uses: actions/checkout@v4
@@ -143,9 +156,16 @@ jobs:
done
- name: Run General Tests
run: |
docker compose exec -T \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/e2e/General
command: >-
docker compose exec -T
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
appwrite test /usr/src/code/tests/e2e/General --debug
- name: Failure Logs
@@ -160,9 +180,17 @@ jobs:
name: E2E Service Test
runs-on: ubuntu-latest
needs: setup
permissions:
contents: read
pull-requests: write
strategy:
fail-fast: false
matrix:
db_adapter: [
MARIADB,
POSTGRESQL
]
service: [
Account,
Avatars,
@@ -214,16 +242,44 @@ jobs:
done
- name: Run ${{ matrix.service }} tests with Project table mode
run: |
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/e2e/Services/${{ matrix.service }}
command: |
echo "Using project tables"
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug --exclude-group abuseEnabled,screenshots
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
# Set DB Adapter Specific ENV Vars using if-elif
if [ "${{ matrix.db_adapter }}" = "MARIADB" ]; then
export _APP_DB_ADAPTER=mariadb
export _APP_DB_HOST=mariadb
export _APP_DB_PORT=3306
export _APP_DB_SCHEMA=appwrite
elif [ "${{ matrix.db_adapter }}" = "POSTGRESQL" ]; then
export _APP_DB_ADAPTER=postgresql
export _APP_DB_HOST=postgresql
export _APP_DB_PORT=5432
export _APP_DB_SCHEMA=appwrite
else
echo "Unknown DB adapter: ${{ matrix.db_adapter }}"
exit 1
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_DB_ADAPTER \
-e _APP_DB_HOST \
-e _APP_DB_PORT \
-e _APP_DB_SCHEMA \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug --exclude-group abuseEnabled,screenshots
- name: Failure Logs
if: failure()
@@ -238,6 +294,9 @@ jobs:
runs-on: ubuntu-latest
needs: [ setup, check_database_changes ]
if: needs.check_database_changes.outputs.database_changed == 'true'
permissions:
contents: read
pull-requests: write
strategy:
fail-fast: false
matrix:
@@ -297,22 +356,29 @@ jobs:
done
- name: Run ${{ matrix.service }} tests with ${{ matrix.tables-mode }} table mode
run: |
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug --exclude-group abuseEnabled,screenshots
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/e2e/Services/${{ matrix.service }}
command: |
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug --exclude-group abuseEnabled,screenshots
- name: Failure Logs
if: failure()
@@ -326,6 +392,9 @@ jobs:
name: E2E Service Test (Abuse enabled)
runs-on: ubuntu-latest
needs: setup
permissions:
contents: read
pull-requests: write
steps:
- name: checkout
uses: actions/checkout@v4
@@ -345,16 +414,23 @@ jobs:
sleep 30
- name: Run Projects tests in dedicated table mode
run: |
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/e2e/Services/Projects
command: |
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=abuseEnabled
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=abuseEnabled
- name: Failure Logs
if: failure()
@@ -369,6 +445,9 @@ jobs:
runs-on: ubuntu-latest
needs: [ setup, check_database_changes ]
if: needs.check_database_changes.outputs.database_changed == 'true'
permissions:
contents: read
pull-requests: write
strategy:
fail-fast: false
matrix:
@@ -395,22 +474,29 @@ jobs:
sleep 30
- name: Run Projects tests in ${{ matrix.tables-mode }} table mode
run: |
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/e2e/Services/Projects
command: |
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=abuseEnabled
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=abuseEnabled
- name: Failure Logs
if: failure()
@@ -424,6 +510,9 @@ jobs:
name: E2E Service Test (Site Screenshots)
runs-on: ubuntu-latest
needs: setup
permissions:
contents: read
pull-requests: write
steps:
- name: checkout
uses: actions/checkout@v4
@@ -443,17 +532,24 @@ jobs:
sleep 30
- name: Run Site tests with browser connected in dedicated table mode
run: |
echo "Keeping original value of _APP_BROWSER_HOST"
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/e2e/Services/Sites
command: |
echo "Keeping original value of _APP_BROWSER_HOST"
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
- name: Failure Logs
if: failure()
@@ -468,6 +564,9 @@ jobs:
runs-on: ubuntu-latest
needs: [ setup, check_database_changes ]
if: needs.check_database_changes.outputs.database_changed == 'true'
permissions:
contents: read
pull-requests: write
strategy:
fail-fast: false
matrix:
@@ -494,23 +593,30 @@ jobs:
sleep 30
- name: Run Site tests with browser connected in ${{ matrix.tables-mode }} table mode
run: |
echo "Keeping original value of _APP_BROWSER_HOST"
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
uses: itznotabug/php-retry@v3
with:
max_attempts: 3
timeout_minutes: 30
job_id: ${{ job.check_run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
test_dir: tests/e2e/Services/Sites
command: |
echo "Keeping original value of _APP_BROWSER_HOST"
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
- name: Failure Logs
if: failure()
@@ -518,4 +624,4 @@ jobs:
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
docker compose logs openruntimes-executor
+50 -39
View File
@@ -16,13 +16,13 @@ use Swoole\Timer;
use Utopia\Cache\Adapter\Pool as CachePool;
use Utopia\Cache\Adapter\Sharding;
use Utopia\Cache\Cache;
use Utopia\CLI\CLI;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Adapter\Pool as DatabasePool;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\DI\Dependency;
use Utopia\DSN\DSN;
use Utopia\Logger\Log;
use Utopia\Platform\Service;
@@ -45,9 +45,32 @@ Config::setParam('runtimes', (new Runtimes('v5'))->getAll(supported: false));
require_once __DIR__ . '/controllers/general.php';
global $register;
CLI::setResource('register', fn () => $register);
CLI::setResource('cache', function ($pools) {
$platform = new Appwrite();
$args = $platform->getEnv('argv');
\array_shift($args);
if (!isset($args[0])) {
Console::error('Missing task name');
Console::exit(1);
}
$taskName = $args[0];
$platform->init(Service::TYPE_TASK);
$cli = $platform->getCli();
$setResource = function (string $name, callable $callback, array $injections = []) use ($cli) {
$dependency = new Dependency();
$dependency->setName($name)->setCallback($callback);
foreach ($injections as $injection) {
$dependency->inject($injection);
}
$cli->setResource($dependency);
};
$setResource('register', fn () => $register, []);
$setResource('cache', function ($pools) {
$list = Config::getParam('pools-cache', []);
$adapters = [];
@@ -58,17 +81,17 @@ CLI::setResource('cache', function ($pools) {
return new Cache(new Sharding($adapters));
}, ['pools']);
CLI::setResource('pools', function (Registry $register) {
$setResource('pools', function (Registry $register) {
return $register->get('pools');
}, ['register']);
CLI::setResource('authorization', function () {
$setResource('authorization', function () {
$authorization = new Authorization();
$authorization->disable();
return $authorization;
}, []);
CLI::setResource('dbForPlatform', function ($pools, $cache, $authorization) {
$setResource('dbForPlatform', function ($pools, $cache, $authorization) {
$sleep = 3;
$maxAttempts = 5;
$attempts = 0;
@@ -111,16 +134,17 @@ CLI::setResource('dbForPlatform', function ($pools, $cache, $authorization) {
return $dbForPlatform;
}, ['pools', 'cache', 'authorization']);
CLI::setResource('console', function () {
$setResource('console', function () {
return new Document(Config::getParam('console'));
}, []);
CLI::setResource(
$setResource(
'isResourceBlocked',
fn () => fn (Document $project, string $resourceType, ?string $resourceId) => false
fn () => fn (Document $project, string $resourceType, ?string $resourceId) => false,
[]
);
CLI::setResource('getProjectDB', function (Group $pools, Database $dbForPlatform, $cache, $authorization) {
$setResource('getProjectDB', function (Group $pools, Database $dbForPlatform, $cache, $authorization) {
$databases = []; // TODO: @Meldiron This should probably be responsibility of utopia-php/pools
return function (Document $project) use ($pools, $dbForPlatform, $cache, $authorization, &$databases) {
@@ -182,7 +206,7 @@ CLI::setResource('getProjectDB', function (Group $pools, Database $dbForPlatform
};
}, ['pools', 'dbForPlatform', 'cache', 'authorization']);
CLI::setResource('getLogsDB', function (Group $pools, Cache $cache, Authorization $authorization) {
$setResource('getLogsDB', function (Group $pools, Cache $cache, Authorization $authorization) {
$database = null;
return function (?Document $project = null) use ($pools, $cache, $database, $authorization) {
@@ -210,40 +234,40 @@ CLI::setResource('getLogsDB', function (Group $pools, Cache $cache, Authorizatio
return $database;
};
}, ['pools', 'cache', 'authorization']);
CLI::setResource('publisher', function (Group $pools) {
$setResource('publisher', function (Group $pools) {
return new BrokerPool(publisher: $pools->get('publisher'));
}, ['pools']);
CLI::setResource('publisherDatabases', function (BrokerPool $publisher) {
$setResource('publisherDatabases', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherFunctions', function (BrokerPool $publisher) {
$setResource('publisherFunctions', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherMigrations', function (BrokerPool $publisher) {
$setResource('publisherMigrations', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherStatsUsage', function (BrokerPool $publisher) {
$setResource('publisherStatsUsage', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherMessaging', function (BrokerPool $publisher) {
$setResource('publisherMessaging', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('queueForStatsUsage', function (Publisher $publisher) {
$setResource('queueForStatsUsage', function (Publisher $publisher) {
return new StatsUsage($publisher);
}, ['publisher']);
CLI::setResource('queueForStatsResources', function (Publisher $publisher) {
$setResource('queueForStatsResources', function (Publisher $publisher) {
return new StatsResources($publisher);
}, ['publisher']);
CLI::setResource('queueForFunctions', function (Publisher $publisher) {
$setResource('queueForFunctions', function (Publisher $publisher) {
return new Func($publisher);
}, ['publisher']);
CLI::setResource('queueForDeletes', function (Publisher $publisher) {
$setResource('queueForDeletes', function (Publisher $publisher) {
return new Delete($publisher);
}, ['publisher']);
CLI::setResource('queueForCertificates', function (Publisher $publisher) {
$setResource('queueForCertificates', function (Publisher $publisher) {
return new Certificate($publisher);
}, ['publisher']);
CLI::setResource('logError', function (Registry $register) {
$setResource('logError', function (Registry $register) {
return function (Throwable $error, string $namespace, string $action) use ($register) {
Console::error('[Error] Timestamp: ' . date('c', time()));
Console::error('[Error] Type: ' . get_class($error));
@@ -295,22 +319,9 @@ CLI::setResource('logError', function (Registry $register) {
};
}, ['register']);
CLI::setResource('executor', fn () => new Executor());
$setResource('executor', fn () => new Executor(), []);
CLI::setResource('telemetry', fn () => new NoTelemetry());
$platform = new Appwrite();
$args = $platform->getEnv('argv');
if (!isset($args[0])) {
Console::error('Missing task name');
Console::exit(1);
}
\array_shift($args);
$taskName = $args[0];
$platform->init(Service::TYPE_TASK);
$cli = $platform->getCli();
$setResource('telemetry', fn () => new NoTelemetry(), []);
$cli
->error()
+1 -1
View File
@@ -227,7 +227,7 @@ return [
[
'key' => 'cli',
'name' => 'Command Line',
'version' => '13.3.1',
'version' => '13.3.2',
'url' => 'https://github.com/appwrite/sdk-for-cli',
'package' => 'https://www.npmjs.com/package/appwrite-cli',
'enabled' => true,
+9
View File
@@ -358,6 +358,15 @@ return [
'question' => '',
'filter' => ''
],
[
'name' => '_APP_DB_ADAPTER',
'description' => 'Which database adapter to use. Must be one of: mariadb, postgresql.',
'introduction' => '1.6.0',
'default' => 'mariadb',
'required' => true,
'question' => 'Choose your database (mariadb|postgresql)',
'filter' => ''
],
[
'name' => '_APP_TRUSTED_HEADERS',
'description' => 'This option allows you to set the list of trusted headers, the value is a commaseparated list of HTTP header names, evaluated left-to-right for the first valid IP. Header names are treated case-insensitively.',
+18 -14
View File
@@ -60,7 +60,7 @@ use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Emails\Email;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\Storage\Validator\FileName;
use Utopia\System\System;
@@ -1514,21 +1514,25 @@ Http::get('/v1/account/sessions/oauth2/:provider/redirect')
}
// Allow redirect to rule URL if related to project
//Check if $redirectValidator is instance of Redirect class
// Check if $redirectValidator is instance of Redirect class
if ($redirectValidator instanceof Redirect) {
$rules = $authorization->skip(fn () => $dbForPlatform->find('rules', [
Query::equal('domain', [
parse_url($state['success'], PHP_URL_HOST),
parse_url($state['failure'], PHP_URL_HOST)
]),
Query::equal('projectInternalId', [$project->getSequence()]),
Query::limit(2)
]));
$domains = \array_filter([
parse_url($state['success'], PHP_URL_HOST) ?? '',
parse_url($state['failure'], PHP_URL_HOST) ?? ''
], fn ($domain) => \is_string($domain) && $domain !== '');
foreach ($rules as $rule) {
$allowedHostnames = $redirectValidator->getAllowedHostnames();
$allowedHostnames[] = $rule->getAttribute('domain', '');
$redirectValidator->setAllowedHostnames($allowedHostnames);
if (!empty($domains)) {
$rules = $authorization->skip(fn () => $dbForPlatform->find('rules', [
Query::equal('domain', \array_values(\array_unique($domains))),
Query::equal('projectInternalId', [$project->getSequence()]),
Query::limit(2)
]));
foreach ($rules as $rule) {
$allowedHostnames = $redirectValidator->getAllowedHostnames();
$allowedHostnames[] = $rule->getAttribute('domain', '');
$redirectValidator->setAllowedHostnames($allowedHostnames);
}
}
}
+1 -1
View File
@@ -20,7 +20,7 @@ use GraphQL\Validator\Rules\QueryDepth;
use Swoole\Coroutine\WaitGroup;
use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\System\System;
use Utopia\Validator\JSON;
use Utopia\Validator\Text;
+1 -1
View File
@@ -8,7 +8,7 @@ use Appwrite\Utopia\Response;
use MaxMind\Db\Reader;
use Utopia\Config\Config;
use Utopia\Database\Document;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
Http::get('/v1/locale')
+1 -1
View File
@@ -43,7 +43,7 @@ use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\Roles;
use Utopia\Database\Validator\UID;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
+1 -1
View File
@@ -21,7 +21,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Queries\Documents;
use Utopia\Database\Validator\Query\Cursor;
use Utopia\Database\Validator\UID;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Migration\Resource;
use Utopia\Migration\Sources\Appwrite;
use Utopia\Migration\Sources\CSV;
+1 -1
View File
@@ -16,7 +16,7 @@ use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Datetime as DateTimeValidator;
use Utopia\Database\Validator\UID;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
+1 -1
View File
@@ -31,7 +31,7 @@ use Utopia\Database\Validator\Datetime as DatetimeValidator;
use Utopia\Database\Validator\Query\Cursor;
use Utopia\Database\Validator\UID;
use Utopia\Domains\Validator\PublicDomain;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
+1 -1
View File
@@ -51,7 +51,7 @@ use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Emails\Email;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
+1 -1
View File
@@ -60,7 +60,7 @@ use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Emails\Email;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
+2 -2
View File
@@ -8,7 +8,7 @@ use Appwrite\SDK\Response as SDKResponse;
use Appwrite\Utopia\Request;
use Appwrite\Utopia\Response;
use Appwrite\Vcs\Comment;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Exception\Duplicate;
@@ -17,7 +17,7 @@ use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\System\System;
use Utopia\Validator\Text;
use Utopia\VCS\Adapter\Git\GitHub;
+3 -3
View File
@@ -34,8 +34,8 @@ use Appwrite\Utopia\View;
use Executor\Executor;
use MaxMind\Db\Reader;
use Swoole\Http\Request as SwooleRequest;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
use Utopia\Database\Document;
@@ -45,7 +45,7 @@ use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\Domains\Domain;
use Utopia\DSN\DSN;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\Logger\Adapter\Sentry;
use Utopia\Logger\Log;
@@ -1252,7 +1252,7 @@ Http::error()
}
switch ($class) {
case Utopia\Exception::class:
case Utopia\Http\Exception::class:
$error = new AppwriteException(AppwriteException::GENERAL_UNKNOWN, $message, $code, $error);
switch ($code) {
case 400:
+1 -1
View File
@@ -12,7 +12,7 @@ use Utopia\Database\Helpers\ID;
use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Validator\UID;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\Text;
+1 -1
View File
@@ -30,7 +30,7 @@ use Utopia\Database\Document;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Authorization\Input;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\System\System;
use Utopia\Telemetry\Adapter as Telemetry;
use Utopia\Validator\WhiteList;
+1 -1
View File
@@ -8,7 +8,7 @@ use Utopia\Config\Config;
use Utopia\Database\DateTime;
use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\System\System;
Http::init()
+1 -1
View File
@@ -2,7 +2,7 @@
use Appwrite\Utopia\Response;
use Utopia\Config\Config;
use Utopia\Http;
use Utopia\Http\Http;
Http::get('/versions')
->desc('Get Version')
+9 -8
View File
@@ -14,9 +14,9 @@ use Swoole\Timer;
use Utopia\Audit\Adapter\Database as AdapterDatabase;
use Utopia\Audit\Adapter\SQL as AuditAdapterSQL;
use Utopia\Audit\Audit;
use Utopia\CLI\Console;
use Utopia\Compression\Compression;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Adapter\Pool as DatabasePool;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
@@ -26,14 +26,15 @@ use Utopia\Database\Helpers\ID;
use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Query;
use Utopia\Http;
use Utopia\Http\Files;
use Utopia\Http\Http;
use Utopia\Logger\Log;
use Utopia\Logger\Log\User;
use Utopia\Pools\Group;
use Utopia\Swoole\Files;
use Utopia\System\System;
Files::load(__DIR__.'/../public');
$files = new Files();
$files->load(__DIR__.'/../public');
const DOMAIN_SYNC_TIMER = 30; // 30 seconds
@@ -440,21 +441,21 @@ $http->on(Constant::EVENT_START, function (Server $http) use ($payloadSize, $reg
});
});
$http->on(Constant::EVENT_REQUEST, function (SwooleRequest $swooleRequest, SwooleResponse $swooleResponse) use ($register) {
$http->on(Constant::EVENT_REQUEST, function (SwooleRequest $swooleRequest, SwooleResponse $swooleResponse) use ($register, $files) {
Http::setResource('swooleRequest', fn () => $swooleRequest);
Http::setResource('swooleResponse', fn () => $swooleResponse);
$request = new Request($swooleRequest);
$response = new Response($swooleResponse);
if (Files::isFileLoaded($request->getURI())) {
if ($files->isFileLoaded($request->getURI())) {
$time = (60 * 60 * 24 * 365 * 2); // 45 days cache
$response
->setContentType(Files::getFileMimeType($request->getURI()))
->setContentType($files->getFileMimeType($request->getURI()))
->addHeader('Cache-Control', 'public, max-age=' . $time)
->addHeader('Expires', \date('D, d M Y H:i:s', \time() + $time) . ' GMT') // 45 days cache
->send(Files::getFileContents($request->getURI()));
->send($files->getFileContents($request->getURI()));
return;
}
+2
View File
@@ -5,6 +5,8 @@ use Appwrite\Platform\Modules\Compute\Specification;
const APP_NAME = 'Appwrite';
const APP_DOMAIN = 'appwrite.io';
const APP_VIEWS_DIR = __DIR__ . '/../views';
// Email
const APP_EMAIL_TEAM = 'team@localhost.test'; // Default email address
const APP_EMAIL_SECURITY = ''; // Default security email address
+36 -8
View File
@@ -9,15 +9,16 @@ use MaxMind\Db\Reader;
use PHPMailer\PHPMailer\PHPMailer;
use Swoole\Database\PDOProxy;
use Utopia\Cache\Adapter\Redis as RedisCache;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Adapter\MariaDB;
use Utopia\Database\Adapter\MySQL;
use Utopia\Database\Adapter\Postgres;
use Utopia\Database\Adapter\SQL;
use Utopia\Database\PDO;
use Utopia\Domains\Validator\PublicDomain;
use Utopia\DSN\DSN;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Logger\Adapter\AppSignal;
use Utopia\Logger\Adapter\LogOwl;
use Utopia\Logger\Adapter\Raygun;
@@ -150,7 +151,7 @@ $register->set('pools', function () {
$group = new Group();
$fallbackForDB = 'db_main=' . AppwriteURL::unparse([
'scheme' => 'mariadb',
'scheme' => System::getEnv('_APP_DB_ADAPTER', 'mariadb'),
'host' => System::getEnv('_APP_DB_HOST', 'mariadb'),
'port' => System::getEnv('_APP_DB_PORT', '3306'),
'user' => System::getEnv('_APP_DB_USER', ''),
@@ -170,19 +171,19 @@ $register->set('pools', function () {
'type' => 'database',
'dsns' => $fallbackForDB,
'multiple' => false,
'schemes' => ['mariadb', 'mysql'],
'schemes' => ['mariadb', 'mysql','postgresql'],
],
'database' => [
'type' => 'database',
'dsns' => $fallbackForDB,
'multiple' => true,
'schemes' => ['mariadb', 'mysql'],
'schemes' => ['mariadb', 'mysql','postgresql'],
],
'logs' => [
'type' => 'database',
'dsns' => System::getEnv('_APP_CONNECTIONS_DB_LOGS', $fallbackForDB),
'multiple' => false,
'schemes' => ['mariadb', 'mysql'],
'schemes' => ['mariadb', 'mysql','postgresql'],
],
'publisher' => [
'type' => 'publisher',
@@ -275,6 +276,17 @@ $register->set('pools', function () {
]);
});
},
'postgresql' => function () use ($dsnHost, $dsnPort, $dsnUser, $dsnPass, $dsnDatabase) {
return new PDOProxy(function () use ($dsnHost, $dsnPort, $dsnUser, $dsnPass, $dsnDatabase) {
return new PDO("pgsql:host={$dsnHost};port={$dsnPort};dbname={$dsnDatabase}", $dsnUser, $dsnPass, array(
\PDO::ATTR_TIMEOUT => 3, // Seconds
\PDO::ATTR_PERSISTENT => false,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => true,
\PDO::ATTR_STRINGIFY_FETCHES => true
));
});
},
'redis' => function () use ($dsnHost, $dsnPort, $dsnPass) {
$redis = new \Redis();
@$redis->pconnect($dsnHost, (int)$dsnPort);
@@ -297,6 +309,7 @@ $register->set('pools', function () {
$adapter = match ($dsn->getScheme()) {
'mariadb' => new MariaDB($resource()),
'mysql' => new MySQL($resource()),
'postgresql' => new Postgres($resource()),
default => null
};
@@ -351,10 +364,25 @@ $register->set('db', function () {
$dbPort = System::getEnv('_APP_DB_PORT', '');
$dbUser = System::getEnv('_APP_DB_USER', '');
$dbPass = System::getEnv('_APP_DB_PASS', '');
$dbScheme = System::getEnv('_APP_DB_SCHEMA', '');
$dbSchema = System::getEnv('_APP_DB_SCHEMA', '');
$dbAdapter = System::getEnv('_APP_DB_ADAPTER', 'mariadb');
$dsn = '';
switch ($dbAdapter) {
case 'postgresql':
$dsn = "pgsql:host={$dbHost};port={$dbPort};dbname={$dbSchema}";
break;
case 'mysql':
case 'mariadb':
default:
$dsn = "mysql:host={$dbHost};port={$dbPort};dbname={$dbSchema};charset=utf8mb4";
break;
}
return new PDO(
"mysql:host={$dbHost};port={$dbPort};dbname={$dbScheme};charset=utf8mb4",
$dsn,
$dbUser,
$dbPass,
SQL::getPDOAttributes()
+6 -2
View File
@@ -43,8 +43,8 @@ use Utopia\Auth\Store;
use Utopia\Cache\Adapter\Pool as CachePool;
use Utopia\Cache\Adapter\Sharding;
use Utopia\Cache\Cache;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Adapter\Pool as DatabasePool;
use Utopia\Database\Database;
use Utopia\Database\DateTime as DatabaseDateTime;
@@ -52,7 +52,7 @@ use Utopia\Database\Document;
use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\DSN\DSN;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Locale\Locale;
use Utopia\Logger\Log;
use Utopia\Pools\Group;
@@ -524,6 +524,10 @@ Http::setResource('project', function ($dbForPlatform, $request, $console, $auth
/** @var Utopia\Database\Document $console */
$projectId = $request->getParam('project', $request->getHeader('x-appwrite-project', ''));
// Realtime channel "project" can send project=Query array
if (!\is_string($projectId)) {
$projectId = $request->getHeader('x-appwrite-project', '');
}
if (empty($projectId) || $projectId === 'console') {
return $console;
+6 -5
View File
@@ -22,8 +22,8 @@ use Utopia\Auth\Store;
use Utopia\Cache\Adapter\Pool as CachePool;
use Utopia\Cache\Adapter\Sharding;
use Utopia\Cache\Cache;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Adapter\Pool as DatabasePool;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
@@ -33,7 +33,7 @@ use Utopia\Database\Helpers\ID;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Query;
use Utopia\DSN\DSN;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Logger\Log;
use Utopia\Pools\Group;
use Utopia\Registry\Registry;
@@ -690,11 +690,11 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server,
$code = 500;
}
$message = $th->getMessage();
// sanitize 0 && 5xx errors
if (($code === 0 || $code >= 500) && !Http::isDevelopment()) {
$realtimeViolation = $th instanceof AppwriteException && $th->getType() === AppwriteException::REALTIME_POLICY_VIOLATION;
if (($code === 0 || $code >= 500) && !$realtimeViolation && !Http::isDevelopment()) {
$message = 'Error: Server Error';
}
@@ -717,7 +717,7 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server,
}
});
$server->onMessage(function (int $connection, string $message) use ($server, $register, $realtime, $containerId) {
$server->onMessage(function (int $connection, string $message) use ($server, $register, $realtime, $containerId, $logError) {
try {
$response = new Response(new SwooleResponse());
$projectId = $realtime->connections[$connection]['projectId'] ?? null;
@@ -840,6 +840,7 @@ $server->onMessage(function (int $connection, string $message) use ($server, $re
throw new Exception(Exception::REALTIME_MESSAGE_FORMAT_INVALID, 'Message type is not valid.');
}
} catch (Throwable $th) {
$logError($th, "realtimeMessage");
$code = $th->getCode();
if (!is_int($code)) {
$code = 500;
+65 -18
View File
@@ -12,6 +12,7 @@ $version = $this->getParam('version', '');
$organization = $this->getParam('organization', '');
$image = $this->getParam('image', '');
$enableAssistant = $this->getParam('enableAssistant', false);
$dbService = $this->getParam('database');
?>services:
traefik:
image: traefik:3.6
@@ -70,8 +71,8 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite-sites:/storage/sites:rw
- appwrite-builds:/storage/builds:rw
depends_on:
- mariadb
- redis
- <?= $dbService . "\n" ?>
# - clamav
environment:
- _APP_ENV
@@ -108,6 +109,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_SMTP_HOST
- _APP_SMTP_PORT
- _APP_SMTP_SECURE
@@ -223,8 +225,8 @@ $enableAssistant = $this->getParam('enableAssistant', false);
networks:
- appwrite
depends_on:
- mariadb
- redis
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -240,6 +242,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_USAGE_STATS
- _APP_LOGGING_CONFIG
@@ -253,7 +256,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -267,6 +270,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
appwrite-worker-webhooks:
@@ -279,7 +283,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -291,6 +295,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -307,7 +312,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
volumes:
- appwrite-uploads:/storage/uploads:rw
- appwrite-cache:/storage/cache:rw
@@ -328,6 +333,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_STORAGE_DEVICE
- _APP_STORAGE_S3_ACCESS_KEY
- _APP_STORAGE_S3_SECRET
@@ -370,7 +376,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -384,6 +390,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
appwrite-worker-builds:
@@ -396,7 +403,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
volumes:
- appwrite-functions:/storage/functions:rw
- appwrite-sites:/storage/sites:rw
@@ -417,6 +424,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_VCS_GITHUB_APP_NAME
- _APP_VCS_GITHUB_PRIVATE_KEY
@@ -464,7 +472,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
volumes:
- appwrite-config:/storage/config:rw
- appwrite-certificates:/storage/certificates:rw
@@ -489,6 +497,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
appwrite-worker-functions:
@@ -501,7 +510,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
- openruntimes-executor
environment:
- _APP_ENV
@@ -518,6 +527,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_FUNCTIONS_TIMEOUT
- _APP_SITES_TIMEOUT
- _APP_COMPUTE_BUILD_TIMEOUT
@@ -540,6 +550,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -551,6 +562,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -576,6 +588,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite-uploads:/storage/uploads:rw
depends_on:
- redis
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -589,6 +602,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_SMS_FROM
- _APP_SMS_PROVIDER
@@ -626,7 +640,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
volumes:
- appwrite-imports:/storage/imports:rw
depends_on:
- mariadb
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -647,6 +661,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_MIGRATIONS_FIREBASE_CLIENT_ID
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
@@ -661,6 +676,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -681,6 +697,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_MAINTENANCE_INTERVAL
- _APP_MAINTENANCE_RETENTION_EXECUTION
- _APP_MAINTENANCE_RETENTION_CACHE
@@ -700,7 +717,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -710,6 +727,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -729,7 +747,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -739,6 +757,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -757,7 +776,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- appwrite
depends_on:
- redis
- mariadb
- <?= $dbService . "\n" ?>
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -767,6 +786,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -784,7 +804,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
networks:
- appwrite
depends_on:
- mariadb
- <?= $dbService . "\n" ?>
- redis
environment:
- _APP_ENV
@@ -799,6 +819,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
appwrite-task-scheduler-executions:
image: <?php echo $organization; ?>/<?php echo $image; ?>:<?php echo $version."\n"; ?>
@@ -809,7 +830,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
networks:
- appwrite
depends_on:
- mariadb
- <?= $dbService . "\n" ?>
- redis
environment:
- _APP_ENV
@@ -824,6 +845,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
appwrite-task-scheduler-messages:
image: <?php echo $organization; ?>/<?php echo $image; ?>:<?php echo $version."\n"; ?>
@@ -834,7 +856,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
networks:
- appwrite
depends_on:
- mariadb
- <?= $dbService . "\n" ?>
- redis
environment:
- _APP_ENV
@@ -849,6 +871,7 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
<?php if ($enableAssistant): ?>
appwrite-assistant:
@@ -922,10 +945,12 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- OPR_EXECUTOR_STORAGE_WASABI_REGION=$_APP_STORAGE_WASABI_REGION
- OPR_EXECUTOR_STORAGE_WASABI_BUCKET=$_APP_STORAGE_WASABI_BUCKET
<?php if ($dbService === 'mariadb'): ?>
mariadb:
image: mariadb:10.11 # fix issues when upgrading using: mysql_upgrade -u root -p
image: mariadb:10.11
container_name: appwrite-mariadb
<<: *x-logging
restart: unless-stopped
networks:
- appwrite
@@ -939,6 +964,24 @@ $enableAssistant = $this->getParam('enableAssistant', false);
- MARIADB_AUTO_UPGRADE=1
command: 'mysqld --innodb-flush-method=fsync'
<?php elseif ($dbService === 'postgresql'): ?>
postgresql:
image: postgres:15
container_name: appwrite-postgresql
restart: unless-stopped
networks:
- appwrite
volumes:
- appwrite-postgresql:/var/lib/postgresql/data:rw
environment:
- POSTGRES_DB=${_APP_DB_SCHEMA}
- POSTGRES_USER=${_APP_DB_USER}
- POSTGRES_PASSWORD=${_APP_DB_PASS}
command: "postgres"
<?php endif; ?>
redis:
image: redis:7.2.4-alpine
container_name: appwrite-redis
@@ -972,7 +1015,11 @@ networks:
name: runtimes
volumes:
<?php if ($dbService === 'mariadb'): ?>
appwrite-mariadb:
<?php elseif ($dbService === 'postgresql'): ?>
appwrite-postgresql:
<?php endif; ?>
appwrite-redis:
appwrite-cache:
appwrite-uploads:
+1 -1
View File
@@ -28,8 +28,8 @@ use Utopia\Audit\Audit as UtopiaAudit;
use Utopia\Cache\Adapter\Pool as CachePool;
use Utopia\Cache\Adapter\Sharding;
use Utopia\Cache\Cache;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Adapter\Pool as DatabasePool;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
+3 -4
View File
@@ -46,11 +46,11 @@
"appwrite/php-runtimes": "0.19.*",
"appwrite/php-clamav": "2.0.*",
"utopia-php/abuse": "1.2.*",
"utopia-php/analytics": "0.10.*",
"utopia-php/analytics": "0.15.*",
"utopia-php/audit": "2.2.*",
"utopia-php/auth": "0.5.*",
"utopia-php/cache": "1.0.*",
"utopia-php/cli": "0.15.*",
"utopia-php/cli": "0.22.*",
"utopia-php/config": "1.*",
"utopia-php/database": "5.*",
"utopia-php/detector": "0.2.*",
@@ -65,18 +65,17 @@
"utopia-php/logger": "0.6.*",
"utopia-php/messaging": "0.20.*",
"utopia-php/migration": "1.5.*",
"utopia-php/orchestration": "0.9.*",
"utopia-php/platform": "0.7.*",
"utopia-php/pools": "1.*",
"utopia-php/preloader": "0.2.*",
"utopia-php/queue": "0.15.*",
"utopia-php/registry": "0.5.*",
"utopia-php/storage": "0.18.*",
"utopia-php/swoole": "1.*",
"utopia-php/system": "0.10.*",
"utopia-php/telemetry": "0.2.*",
"utopia-php/vcs": "1.*",
"utopia-php/websocket": "0.3.*",
"utopia-php/console": "0.1.*",
"matomo/device-detector": "6.4.*",
"dragonmantank/cron-expression": "3.4.*",
"phpmailer/phpmailer": "6.9.*",
Generated
+101 -200
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "917f9050c673379c91e46814c7c07f64",
"content-hash": "367aaf665ff75a13d5d7c8b3bedb89a9",
"packages": [
{
"name": "adhocore/jwt",
@@ -216,16 +216,16 @@
},
{
"name": "brick/math",
"version": "0.14.7",
"version": "0.14.8",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
"reference": "07ff363b16ef8aca9692bba3be9e73fe63f34e50"
"reference": "63422359a44b7f06cae63c3b429b59e8efcc0629"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/brick/math/zipball/07ff363b16ef8aca9692bba3be9e73fe63f34e50",
"reference": "07ff363b16ef8aca9692bba3be9e73fe63f34e50",
"url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629",
"reference": "63422359a44b7f06cae63c3b429b59e8efcc0629",
"shasum": ""
},
"require": {
@@ -264,7 +264,7 @@
],
"support": {
"issues": "https://github.com/brick/math/issues",
"source": "https://github.com/brick/math/tree/0.14.7"
"source": "https://github.com/brick/math/tree/0.14.8"
},
"funding": [
{
@@ -272,7 +272,7 @@
"type": "github"
}
],
"time": "2026-02-07T10:57:35+00:00"
"time": "2026-02-10T14:33:43+00:00"
},
{
"name": "chillerlan/php-qrcode",
@@ -1355,16 +1355,16 @@
},
{
"name": "open-telemetry/exporter-otlp",
"version": "1.3.4",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/opentelemetry-php/exporter-otlp.git",
"reference": "62e680d587beb42e5247aa6ecd89ad1ca406e8ca"
"reference": "283a0d66522f2adc6d8d7debfd7686be91c282be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/opentelemetry-php/exporter-otlp/zipball/62e680d587beb42e5247aa6ecd89ad1ca406e8ca",
"reference": "62e680d587beb42e5247aa6ecd89ad1ca406e8ca",
"url": "https://api.github.com/repos/opentelemetry-php/exporter-otlp/zipball/283a0d66522f2adc6d8d7debfd7686be91c282be",
"reference": "283a0d66522f2adc6d8d7debfd7686be91c282be",
"shasum": ""
},
"require": {
@@ -1415,7 +1415,7 @@
"issues": "https://github.com/open-telemetry/opentelemetry-php/issues",
"source": "https://github.com/open-telemetry/opentelemetry-php"
},
"time": "2026-01-15T09:31:34+00:00"
"time": "2026-02-05T09:44:52+00:00"
},
{
"name": "open-telemetry/gen-otlp-protobuf",
@@ -1482,16 +1482,16 @@
},
{
"name": "open-telemetry/sdk",
"version": "1.12.0",
"version": "1.13.0",
"source": {
"type": "git",
"url": "https://github.com/opentelemetry-php/sdk.git",
"reference": "7f1bd524465c1ca42755a9ef1143ba09913f5be0"
"reference": "c76f91203bf7ef98ab3f4e0a82ca21699af185e1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/opentelemetry-php/sdk/zipball/7f1bd524465c1ca42755a9ef1143ba09913f5be0",
"reference": "7f1bd524465c1ca42755a9ef1143ba09913f5be0",
"url": "https://api.github.com/repos/opentelemetry-php/sdk/zipball/c76f91203bf7ef98ab3f4e0a82ca21699af185e1",
"reference": "c76f91203bf7ef98ab3f4e0a82ca21699af185e1",
"shasum": ""
},
"require": {
@@ -1575,7 +1575,7 @@
"issues": "https://github.com/open-telemetry/opentelemetry-php/issues",
"source": "https://github.com/open-telemetry/opentelemetry-php"
},
"time": "2026-01-21T04:14:03+00:00"
"time": "2026-01-28T11:38:11+00:00"
},
{
"name": "open-telemetry/sem-conv",
@@ -3403,25 +3403,25 @@
},
{
"name": "utopia-php/analytics",
"version": "0.10.2",
"version": "0.15.2",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/analytics.git",
"reference": "14c805114736f44c26d6d24b176a2f8b93d86a1f"
"reference": "ce5be7042ad518b83e401dcd785d20c4cc872c67"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/analytics/zipball/14c805114736f44c26d6d24b176a2f8b93d86a1f",
"reference": "14c805114736f44c26d6d24b176a2f8b93d86a1f",
"url": "https://api.github.com/repos/utopia-php/analytics/zipball/ce5be7042ad518b83e401dcd785d20c4cc872c67",
"reference": "ce5be7042ad518b83e401dcd785d20c4cc872c67",
"shasum": ""
},
"require": {
"php": ">=8.0",
"utopia-php/cli": "^0.15.0"
"php": ">=8.0"
},
"require-dev": {
"laravel/pint": "dev-main",
"phpunit/phpunit": "^9.3"
"phpunit/phpunit": "^9.3",
"utopia-php/system": "0.10.*"
},
"type": "library",
"autoload": {
@@ -3443,9 +3443,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/analytics/issues",
"source": "https://github.com/utopia-php/analytics/tree/0.10.2"
"source": "https://github.com/utopia-php/analytics/tree/0.15.2"
},
"time": "2023-03-22T12:01:09+00:00"
"time": "2026-02-09T12:46:39+00:00"
},
{
"name": "utopia-php/audit",
@@ -3605,27 +3605,29 @@
},
{
"name": "utopia-php/cli",
"version": "0.15.4",
"version": "0.22.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/cli.git",
"reference": "cc873548dcab4329f2d56ca35f2edf3ae9d70f51"
"reference": "a7ac387ee626fd27075a87e836fb72c5be38add4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/cli/zipball/cc873548dcab4329f2d56ca35f2edf3ae9d70f51",
"reference": "cc873548dcab4329f2d56ca35f2edf3ae9d70f51",
"url": "https://api.github.com/repos/utopia-php/cli/zipball/a7ac387ee626fd27075a87e836fb72c5be38add4",
"reference": "a7ac387ee626fd27075a87e836fb72c5be38add4",
"shasum": ""
},
"require": {
"php": ">=7.4",
"utopia-php/framework": "0.*.*"
"utopia-php/servers": "0.2.*"
},
"require-dev": {
"laravel/pint": "1.2.*",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.3",
"squizlabs/php_codesniffer": "^3.6",
"vimeo/psalm": "4.0.1"
"swoole/ide-helper": "4.8.8",
"utopia-php/console": "0.0.*"
},
"type": "library",
"autoload": {
@@ -3648,9 +3650,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/cli/issues",
"source": "https://github.com/utopia-php/cli/tree/0.15.4"
"source": "https://github.com/utopia-php/cli/tree/0.22.0"
},
"time": "2026-02-06T09:49:09+00:00"
"time": "2025-10-21T10:42:45+00:00"
},
{
"name": "utopia-php/compression",
@@ -3747,20 +3749,20 @@
},
{
"name": "utopia-php/console",
"version": "0.0.1",
"version": "0.1.1",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/console.git",
"reference": "f77104e4a888fa9cb3e08f32955ec09479ab7a92"
"reference": "d298e43960780e6d76e66de1228c75dc81220e3e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/console/zipball/f77104e4a888fa9cb3e08f32955ec09479ab7a92",
"reference": "f77104e4a888fa9cb3e08f32955ec09479ab7a92",
"url": "https://api.github.com/repos/utopia-php/console/zipball/d298e43960780e6d76e66de1228c75dc81220e3e",
"reference": "d298e43960780e6d76e66de1228c75dc81220e3e",
"shasum": ""
},
"require": {
"php": ">=7.4"
"php": ">=8.0"
},
"require-dev": {
"laravel/pint": "1.2.*",
@@ -3789,9 +3791,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/console/issues",
"source": "https://github.com/utopia-php/console/tree/0.0.1"
"source": "https://github.com/utopia-php/console/tree/0.1.1"
},
"time": "2025-10-20T14:41:36+00:00"
"time": "2026-02-10T10:20:29+00:00"
},
{
"name": "utopia-php/database",
@@ -4112,21 +4114,20 @@
},
{
"name": "utopia-php/emails",
"version": "0.6.6",
"version": "0.6.8",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/emails.git",
"reference": "354f7fe591e1fba7736afada558cb3b02ec03fea"
"reference": "25dfcd46ed47b862d2a7e7c98d92a3a4680b6f1b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/emails/zipball/354f7fe591e1fba7736afada558cb3b02ec03fea",
"reference": "354f7fe591e1fba7736afada558cb3b02ec03fea",
"url": "https://api.github.com/repos/utopia-php/emails/zipball/25dfcd46ed47b862d2a7e7c98d92a3a4680b6f1b",
"reference": "25dfcd46ed47b862d2a7e7c98d92a3a4680b6f1b",
"shasum": ""
},
"require": {
"php": ">=8.0",
"utopia-php/cli": "^0.15",
"utopia-php/domains": "^1.0",
"utopia-php/fetch": "^0.5",
"utopia-php/validators": "0.*"
@@ -4134,7 +4135,9 @@
"require-dev": {
"laravel/pint": "1.25.*",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.3"
"phpunit/phpunit": "^9.3",
"utopia-php/cli": "^0.22",
"utopia-php/console": "0.*"
},
"type": "library",
"autoload": {
@@ -4166,9 +4169,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/emails/issues",
"source": "https://github.com/utopia-php/emails/tree/0.6.6"
"source": "https://github.com/utopia-php/emails/tree/0.6.8"
},
"time": "2026-02-02T10:41:22+00:00"
"time": "2026-02-09T12:31:56+00:00"
},
{
"name": "utopia-php/fetch",
@@ -4211,16 +4214,16 @@
},
{
"name": "utopia-php/framework",
"version": "0.33.38",
"version": "0.33.39",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/http.git",
"reference": "decfa49d60d99e922de364c49169b396fafd5ab8"
"reference": "409a258814d664d3a50fa2f48b6695679334d30b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/http/zipball/decfa49d60d99e922de364c49169b396fafd5ab8",
"reference": "decfa49d60d99e922de364c49169b396fafd5ab8",
"url": "https://api.github.com/repos/utopia-php/http/zipball/409a258814d664d3a50fa2f48b6695679334d30b",
"reference": "409a258814d664d3a50fa2f48b6695679334d30b",
"shasum": ""
},
"require": {
@@ -4233,7 +4236,8 @@
"laravel/pint": "1.*",
"phpbench/phpbench": "1.*",
"phpstan/phpstan": "1.*",
"phpunit/phpunit": "9.*"
"phpunit/phpunit": "9.*",
"swoole/ide-helper": "^6.0"
},
"type": "library",
"autoload": {
@@ -4253,9 +4257,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/http/issues",
"source": "https://github.com/utopia-php/http/tree/0.33.38"
"source": "https://github.com/utopia-php/http/tree/0.33.39"
},
"time": "2026-02-04T04:59:25+00:00"
"time": "2026-02-11T06:33:42+00:00"
},
{
"name": "utopia-php/image",
@@ -4460,16 +4464,16 @@
},
{
"name": "utopia-php/migration",
"version": "1.5.1",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/migration.git",
"reference": "b5fe19804b41d5bdd85571e7cdb83a268b6859e2"
"reference": "93904948f6dd07491821615fd9b9acbcaadec12e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/migration/zipball/b5fe19804b41d5bdd85571e7cdb83a268b6859e2",
"reference": "b5fe19804b41d5bdd85571e7cdb83a268b6859e2",
"url": "https://api.github.com/repos/utopia-php/migration/zipball/93904948f6dd07491821615fd9b9acbcaadec12e",
"reference": "93904948f6dd07491821615fd9b9acbcaadec12e",
"shasum": ""
},
"require": {
@@ -4478,7 +4482,6 @@
"ext-openssl": "*",
"halaxa/json-machine": "^1.2",
"php": ">=8.1",
"utopia-php/console": "0.0.*",
"utopia-php/database": "5.*",
"utopia-php/dsn": "0.2.*",
"utopia-php/storage": "0.18.*"
@@ -4510,9 +4513,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/migration/issues",
"source": "https://github.com/utopia-php/migration/tree/1.5.1"
"source": "https://github.com/utopia-php/migration/tree/1.5.2"
},
"time": "2026-02-05T11:32:03+00:00"
"time": "2026-02-11T06:19:35+00:00"
},
{
"name": "utopia-php/mongo",
@@ -4575,75 +4578,25 @@
},
"time": "2025-10-20T11:11:23+00:00"
},
{
"name": "utopia-php/orchestration",
"version": "0.9.1",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/orchestration.git",
"reference": "55f43513b3f940a3f4f9c2cde7682d0c2581beb0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/orchestration/zipball/55f43513b3f940a3f4f9c2cde7682d0c2581beb0",
"reference": "55f43513b3f940a3f4f9c2cde7682d0c2581beb0",
"shasum": ""
},
"require": {
"php": ">=8.0",
"utopia-php/cli": "0.15.*"
},
"require-dev": {
"laravel/pint": "^1.2",
"phpunit/phpunit": "^9.3",
"vimeo/psalm": "4.0.1"
},
"type": "library",
"autoload": {
"psr-4": {
"Utopia\\Orchestration\\": "src/Orchestration"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Lite & fast micro PHP abstraction library for container orchestration",
"keywords": [
"docker",
"framework",
"kubernetes",
"orchestration",
"php",
"swarm",
"upf",
"utopia"
],
"support": {
"issues": "https://github.com/utopia-php/orchestration/issues",
"source": "https://github.com/utopia-php/orchestration/tree/0.9.1"
},
"time": "2023-03-17T15:05:06+00:00"
},
{
"name": "utopia-php/platform",
"version": "0.7.15",
"version": "0.7.16",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/platform.git",
"reference": "1b94e9b7c3f86d8955178ed05696bb7c8f49839a"
"reference": "34e67e4b80b5741c380071fe765fbc12a132de4f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/platform/zipball/1b94e9b7c3f86d8955178ed05696bb7c8f49839a",
"reference": "1b94e9b7c3f86d8955178ed05696bb7c8f49839a",
"url": "https://api.github.com/repos/utopia-php/platform/zipball/34e67e4b80b5741c380071fe765fbc12a132de4f",
"reference": "34e67e4b80b5741c380071fe765fbc12a132de4f",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-redis": "*",
"php": ">=8.0",
"utopia-php/cli": "0.15.*",
"utopia-php/cli": "0.22.*",
"utopia-php/framework": "0.33.*",
"utopia-php/queue": "0.15.*"
},
@@ -4672,9 +4625,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/platform/issues",
"source": "https://github.com/utopia-php/platform/tree/0.7.15"
"source": "https://github.com/utopia-php/platform/tree/0.7.16"
},
"time": "2026-02-04T05:28:13+00:00"
"time": "2026-02-11T06:36:48+00:00"
},
{
"name": "utopia-php/pools",
@@ -4784,22 +4737,21 @@
},
{
"name": "utopia-php/queue",
"version": "0.15.4",
"version": "0.15.5",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/queue.git",
"reference": "2d693ec59119f853602f4be271602fddefbab507"
"reference": "aa80ffe6350efd3394615c3763dba138223a225a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/queue/zipball/2d693ec59119f853602f4be271602fddefbab507",
"reference": "2d693ec59119f853602f4be271602fddefbab507",
"url": "https://api.github.com/repos/utopia-php/queue/zipball/aa80ffe6350efd3394615c3763dba138223a225a",
"reference": "aa80ffe6350efd3394615c3763dba138223a225a",
"shasum": ""
},
"require": {
"php": ">=8.3",
"php-amqplib/php-amqplib": "^3.7",
"utopia-php/console": "0.0.*",
"utopia-php/fetch": "0.5.*",
"utopia-php/pools": "1.*",
"utopia-php/servers": "0.2.*",
@@ -4845,9 +4797,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/queue/issues",
"source": "https://github.com/utopia-php/queue/tree/0.15.4"
"source": "https://github.com/utopia-php/queue/tree/0.15.5"
},
"time": "2026-02-04T08:50:35+00:00"
"time": "2026-02-10T12:30:46+00:00"
},
{
"name": "utopia-php/registry",
@@ -4903,16 +4855,16 @@
},
{
"name": "utopia-php/servers",
"version": "0.2.4",
"version": "0.2.5",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/servers.git",
"reference": "8675d32f4315e91cdb7757a829356030029ed4f5"
"reference": "4770e879a90685af4ba14e7e5d95d0a17c7fdf03"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/servers/zipball/8675d32f4315e91cdb7757a829356030029ed4f5",
"reference": "8675d32f4315e91cdb7757a829356030029ed4f5",
"url": "https://api.github.com/repos/utopia-php/servers/zipball/4770e879a90685af4ba14e7e5d95d0a17c7fdf03",
"reference": "4770e879a90685af4ba14e7e5d95d0a17c7fdf03",
"shasum": ""
},
"require": {
@@ -4951,9 +4903,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/servers/issues",
"source": "https://github.com/utopia-php/servers/tree/0.2.4"
"source": "https://github.com/utopia-php/servers/tree/0.2.5"
},
"time": "2026-02-04T07:15:26+00:00"
"time": "2026-02-10T04:21:53+00:00"
},
{
"name": "utopia-php/span",
@@ -5056,57 +5008,6 @@
},
"time": "2025-12-17T13:55:20+00:00"
},
{
"name": "utopia-php/swoole",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/swoole.git",
"reference": "8c89f38ff163de6c6f8a4898e467ca38c1f03133"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/swoole/zipball/8c89f38ff163de6c6f8a4898e467ca38c1f03133",
"reference": "8c89f38ff163de6c6f8a4898e467ca38c1f03133",
"shasum": ""
},
"require": {
"ext-swoole": "6.*",
"php": ">=8.1",
"utopia-php/framework": "0.33.*"
},
"require-dev": {
"laravel/pint": "1.2.*",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.3",
"swoole/ide-helper": "6.0.2"
},
"type": "library",
"autoload": {
"psr-4": {
"Utopia\\Swoole\\": "src/Swoole"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "An extension for Utopia Framework to work with PHP Swoole as a PHP FPM alternative",
"keywords": [
"framework",
"http",
"php",
"server",
"swoole",
"upf",
"utopia"
],
"support": {
"issues": "https://github.com/utopia-php/swoole/issues",
"source": "https://github.com/utopia-php/swoole/tree/1.0.2"
},
"time": "2026-02-04T05:12:48+00:00"
},
{
"name": "utopia-php/system",
"version": "0.10.0",
@@ -5488,16 +5389,16 @@
"packages-dev": [
{
"name": "appwrite/sdk-generator",
"version": "1.8.26",
"version": "1.8.28",
"source": {
"type": "git",
"url": "https://github.com/appwrite/sdk-generator.git",
"reference": "ce65854069a1af8ef0757650da5848168cca5f02"
"reference": "4762aa017b28a3a7e4e53da6e193d0c196ec3fd4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/ce65854069a1af8ef0757650da5848168cca5f02",
"reference": "ce65854069a1af8ef0757650da5848168cca5f02",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/4762aa017b28a3a7e4e53da6e193d0c196ec3fd4",
"reference": "4762aa017b28a3a7e4e53da6e193d0c196ec3fd4",
"shasum": ""
},
"require": {
@@ -5533,9 +5434,9 @@
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
"support": {
"issues": "https://github.com/appwrite/sdk-generator/issues",
"source": "https://github.com/appwrite/sdk-generator/tree/1.8.26"
"source": "https://github.com/appwrite/sdk-generator/tree/1.8.28"
},
"time": "2026-02-08T07:41:27+00:00"
"time": "2026-02-11T10:35:18+00:00"
},
{
"name": "doctrine/annotations",
@@ -5762,16 +5663,16 @@
},
{
"name": "laravel/pint",
"version": "v1.27.0",
"version": "v1.27.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90"
"reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90",
"reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90",
"url": "https://api.github.com/repos/laravel/pint/zipball/54cca2de13790570c7b6f0f94f37896bee4abcb5",
"reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5",
"shasum": ""
},
"require": {
@@ -5782,13 +5683,13 @@
"php": "^8.2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.92.4",
"illuminate/view": "^12.44.0",
"larastan/larastan": "^3.8.1",
"laravel-zero/framework": "^12.0.4",
"friendsofphp/php-cs-fixer": "^3.93.1",
"illuminate/view": "^12.51.0",
"larastan/larastan": "^3.9.2",
"laravel-zero/framework": "^12.0.5",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.3.3",
"pestphp/pest": "^3.8.4"
"pestphp/pest": "^3.8.5"
},
"bin": [
"builds/pint"
@@ -5825,7 +5726,7 @@
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2026-01-05T16:49:17+00:00"
"time": "2026-02-10T20:00:20+00:00"
},
{
"name": "matthiasmullie/minify",
+52 -21
View File
@@ -100,7 +100,7 @@ services:
- ./dev:/usr/src/code/dev
# - ./vendor/utopia-php/framework:/usr/src/code/vendor/utopia-php/framework
depends_on:
- mariadb
- ${_APP_DB_HOST:-mariadb}
- redis
- coredns
# - clamav
@@ -149,6 +149,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_SMTP_HOST
- _APP_SMTP_PORT
- _APP_SMTP_SECURE
@@ -283,7 +284,7 @@ services:
- ./app:/usr/src/code/app
- ./src:/usr/src/code/src
depends_on:
- mariadb
- ${_APP_DB_HOST:-mariadb}
- redis
environment:
- _APP_ENV
@@ -300,6 +301,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_USAGE_STATS
- _APP_LOGGING_CONFIG
- _APP_LOGGING_CONFIG_REALTIME
@@ -318,7 +320,7 @@ services:
- ./src:/usr/src/code/src
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -333,6 +335,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_DATABASE_SHARED_TABLES
@@ -348,7 +351,7 @@ services:
- ./src:/usr/src/code/src
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
- request-catcher-sms
- request-catcher-webhook
environment:
@@ -362,6 +365,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -379,7 +383,7 @@ services:
- appwrite
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
volumes:
- appwrite-uploads:/storage/uploads:rw
- appwrite-cache:/storage/cache:rw
@@ -403,6 +407,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_STORAGE_DEVICE
- _APP_STORAGE_S3_ACCESS_KEY
- _APP_STORAGE_S3_SECRET
@@ -446,7 +451,7 @@ services:
- ./src:/usr/src/code/src
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -461,6 +466,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_WORKERS_NUM
- _APP_QUEUE_NAME
@@ -481,7 +487,7 @@ services:
- ./src:/usr/src/code/src
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -498,6 +504,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_VCS_GITHUB_APP_NAME
- _APP_VCS_GITHUB_PRIVATE_KEY
@@ -609,7 +616,7 @@ services:
- appwrite
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
volumes:
- appwrite-config:/storage/config:rw
- appwrite-certificates:/storage/certificates:rw
@@ -638,6 +645,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_DATABASE_SHARED_TABLES
@@ -683,12 +691,8 @@ services:
- ./app:/usr/src/code/app
- ./src:/usr/src/code/src
depends_on:
redis:
condition: service_started
mariadb:
condition: service_started
openruntimes-executor:
condition: service_healthy
- ${_APP_DB_HOST:-mariadb}
- redis
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -705,6 +709,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_FUNCTIONS_TIMEOUT
- _APP_SITES_TIMEOUT
- _APP_COMPUTE_BUILD_TIMEOUT
@@ -782,6 +787,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_SMS_FROM
- _APP_SMS_PROVIDER
@@ -825,7 +831,7 @@ services:
- ./src:/usr/src/code/src
- ./tests:/usr/src/code/tests
depends_on:
- mariadb
- ${_APP_DB_HOST:-mariadb}
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -847,6 +853,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_LOGGING_CONFIG
- _APP_MIGRATIONS_FIREBASE_CLIENT_ID
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
@@ -888,6 +895,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_MAINTENANCE_INTERVAL
- _APP_MAINTENANCE_RETENTION_EXECUTION
- _APP_MAINTENANCE_RETENTION_CACHE
@@ -950,7 +958,7 @@ services:
- ./src:/usr/src/code/src
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -961,6 +969,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -982,7 +991,7 @@ services:
- ./src:/usr/src/code/src
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -993,6 +1002,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -1014,7 +1024,7 @@ services:
- ./src:/usr/src/code/src
depends_on:
- redis
- mariadb
- ${_APP_DB_HOST:-mariadb}
environment:
- _APP_ENV
- _APP_WORKER_PER_CORE
@@ -1025,6 +1035,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_REDIS_HOST
- _APP_REDIS_PORT
- _APP_REDIS_USER
@@ -1045,7 +1056,7 @@ services:
- ./app:/usr/src/code/app
- ./src:/usr/src/code/src
depends_on:
- mariadb
- ${_APP_DB_HOST:-mariadb}
- redis
environment:
- _APP_ENV
@@ -1061,6 +1072,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_DATABASE_SHARED_TABLES
appwrite-task-scheduler-executions:
@@ -1074,7 +1086,7 @@ services:
- ./app:/usr/src/code/app
- ./src:/usr/src/code/src
depends_on:
- mariadb
- ${_APP_DB_HOST:-mariadb}
- redis
environment:
- _APP_ENV
@@ -1090,6 +1102,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
appwrite-task-scheduler-messages:
entrypoint: schedule-messages
@@ -1102,7 +1115,7 @@ services:
- ./app:/usr/src/code/app
- ./src:/usr/src/code/src
depends_on:
- mariadb
- ${_APP_DB_HOST:-mariadb}
- redis
environment:
- _APP_ENV
@@ -1118,6 +1131,7 @@ services:
- _APP_DB_SCHEMA
- _APP_DB_USER
- _APP_DB_PASS
- _APP_DB_ADAPTER
- _APP_DATABASE_SHARED_TABLES
appwrite-assistant:
@@ -1211,6 +1225,22 @@ services:
- MARIADB_AUTO_UPGRADE=1
command: "mysqld --innodb-flush-method=fsync"
postgresql:
image: postgres:18
container_name: appwrite-postgresql
<<: *x-logging
networks:
- appwrite
volumes:
- appwrite-postgresql:/var/lib/postgresql/data:rw
ports:
- "5432:5432"
environment:
- POSTGRES_DB=${_APP_DB_SCHEMA}
- POSTGRES_USER=${_APP_DB_USER}
- POSTGRES_PASSWORD=${_APP_DB_PASS}
command: "postgres"
redis:
image: redis:7.2.4-alpine
<<: *x-logging
@@ -1438,6 +1468,7 @@ configs:
volumes:
appwrite-mariadb:
appwrite-postgresql:
appwrite-redis:
appwrite-cache:
appwrite-uploads:
+5
View File
@@ -1,5 +1,10 @@
# Change Log
## 13.3.2
- Fix handle null rows in table parser
- Export config zod schemas
## 13.3.1
- Fix generated TS imports to auto-detect ESM vs non-ESM
+2 -2
View File
@@ -4,9 +4,9 @@ namespace Appwrite\Certificates;
use Appwrite\Certificates\Exception\CertificateStatus as CertificateStatusException;
use Exception;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\DateTime;
use Utopia\Http;
use Utopia\Http\Http;
use Utopia\Logger\Log;
class LetsEncrypt implements Adapter
+7
View File
@@ -86,4 +86,11 @@ class StatsUsage extends Event
}),
];
}
public function reset(): Event
{
$this->metrics = [];
parent::reset();
return $this;
}
}
+3 -3
View File
@@ -6,9 +6,9 @@ use Appwrite\GraphQL\Exception as GQLException;
use Appwrite\Promises\Swoole;
use Appwrite\Utopia\Request;
use Appwrite\Utopia\Response;
use Utopia\Exception;
use Utopia\Http;
use Utopia\Route;
use Utopia\Http\Exception;
use Utopia\Http\Http;
use Utopia\Http\Route;
use Utopia\System\System;
class Resolvers
+3 -3
View File
@@ -6,9 +6,9 @@ use Appwrite\GraphQL\Types\Mapper;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;
use GraphQL\Type\Schema as GQLSchema;
use Utopia\Exception;
use Utopia\Http;
use Utopia\Route;
use Utopia\Http\Exception;
use Utopia\Http\Http;
use Utopia\Http\Route;
class Schema
{
+2 -2
View File
@@ -9,8 +9,8 @@ use Exception;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;
use GraphQL\Type\Definition\UnionType;
use Utopia\Http;
use Utopia\Route;
use Utopia\Http\Http;
use Utopia\Http\Route;
use Utopia\Validator;
use Utopia\Validator\Nullable;
+27 -4
View File
@@ -344,8 +344,31 @@ class Realtime extends MessagingAdapter
{
$subscriptions = [];
/**
* Reserved channel params with expected type
* If matched the expected type then skip the query parsing like in project
*/
$reservedParamExpectedTypes = [
'project' => 'string',
];
foreach ($channelNames as $channel) {
$params = $getQueryParam(\str_replace('.', '_', $channel));
$paramKey = \str_replace('.', '_', $channel);
$params = $getQueryParam($paramKey);
if (\array_key_exists($paramKey, $reservedParamExpectedTypes) && $params !== null) {
$expectedType = $reservedParamExpectedTypes[$paramKey];
$isExpectedType = match ($expectedType) {
'array' => \is_array($params),
'string' => \is_string($params),
default => false,
};
// If the value matches the expected type dont use it the queries
if ($isExpectedType) {
$params = null;
}
}
if ($params === null) {
if (!isset($subscriptions[0])) {
@@ -358,7 +381,7 @@ class Realtime extends MessagingAdapter
continue;
}
if (!is_array($params)) {
if (!\is_array($params)) {
$params = [$params];
}
@@ -367,12 +390,12 @@ class Realtime extends MessagingAdapter
$subscriptions[$index] = ['channels' => [], 'queries' => []];
}
if (!in_array($channel, $subscriptions[$index]['channels'])) {
if (!\in_array($channel, $subscriptions[$index]['channels'], true)) {
$subscriptions[$index]['channels'][] = $channel;
}
if (empty($subscriptions[$index]['queries'])) {
$raw = is_array($slot) ? $slot : [$slot];
$raw = \is_array($slot) ? $slot : [$slot];
$subscriptions[$index]['queries'] = self::convertQueries($raw);
}
}
+1 -1
View File
@@ -3,8 +3,8 @@
namespace Appwrite\Migration;
use Exception;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Exception\Conflict;
+1 -1
View File
@@ -4,8 +4,8 @@ namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Appwrite\OpenSSL\OpenSSL;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Helpers\ID;
+1 -1
View File
@@ -3,8 +3,8 @@
namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
+1 -1
View File
@@ -4,7 +4,7 @@ namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Utopia\Auth\Proofs\Password;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
+1 -1
View File
@@ -3,7 +3,7 @@
namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Helpers\Permission;
+1 -1
View File
@@ -3,8 +3,8 @@
namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
use Utopia\Database\Document;
+1 -1
View File
@@ -6,7 +6,7 @@ use Appwrite\Migration\Migration;
use Exception;
use PDOException;
use Throwable;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
use Utopia\Database\Document;
+1 -1
View File
@@ -5,7 +5,7 @@ namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Exception;
use Throwable;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
use Utopia\Database\Document;
+1 -1
View File
@@ -5,7 +5,7 @@ namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Exception;
use Throwable;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Exception\Conflict;
+1 -1
View File
@@ -5,8 +5,8 @@ namespace Appwrite\Migration\Version;
use Appwrite\Migration\Migration;
use Exception;
use Throwable;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Exception\Conflict;
+4 -4
View File
@@ -51,14 +51,14 @@ class Origin extends Validator
*/
public function isValid($origin): bool
{
$this->origin = $origin;
$this->scheme = null;
$this->host = null;
if (!is_string($origin) || empty($origin)) {
return false;
}
$this->origin = $origin;
$this->scheme = null;
$this->host = null;
$this->scheme = $this->parseScheme($origin);
$this->host = strtolower(parse_url($origin, PHP_URL_HOST) ?? '');
+1 -1
View File
@@ -3,7 +3,7 @@
namespace Appwrite\Platform;
use Swoole\Coroutine as Co;
use Utopia\CLI\Console;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
use Utopia\Database\Document;
@@ -15,7 +15,7 @@ use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\Swoole\Request;
use Utopia\Http\Adapter\Swoole\Request;
use Utopia\System\System;
use Utopia\VCS\Adapter\Git\GitHub;
use Utopia\VCS\Exception\RepositoryNotFound;
@@ -19,8 +19,8 @@ use Utopia\Database\Exception\Truncate as TruncateException;
use Utopia\Database\Helpers\ID;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Structure;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Platform\Action as UtopiaAction;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Validator\Range;
abstract class Action extends UtopiaAction
@@ -15,7 +15,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Datetime as DatetimeValidator;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -15,7 +15,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Datetime as DatetimeValidator;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\IndexDependency as IndexDependencyValidator;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
class Delete extends Action
{
@@ -16,7 +16,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -15,7 +15,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\FloatValidator;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\FloatValidator;
use Utopia\Validator\Nullable;
@@ -12,7 +12,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
class Get extends Action
{
@@ -15,7 +15,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\IP;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\IP;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Integer;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Integer;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\Spatial;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -15,7 +15,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\Spatial;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -13,7 +13,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -14,7 +14,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -13,7 +13,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -16,7 +16,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\Spatial;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -15,7 +15,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\Spatial;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\Spatial;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -15,7 +15,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\Spatial;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -16,7 +16,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\WhiteList;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Nullable;
use Utopia\Validator\WhiteList;
@@ -16,8 +16,8 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Http;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Http\Http;
use Utopia\Validator;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -14,7 +14,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -13,7 +13,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -15,7 +15,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\URL;
@@ -14,7 +14,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
use Utopia\Validator\URL;
@@ -15,7 +15,7 @@ use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -13,7 +13,7 @@ use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator;
use Utopia\Validator\Boolean;
use Utopia\Validator\Nullable;
@@ -17,7 +17,7 @@ use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Query\Cursor;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Boolean;
class XList extends Action
@@ -25,7 +25,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Index as IndexValidator;
use Utopia\Database\Validator\Permissions;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Boolean;
use Utopia\Validator\JSON;
@@ -14,7 +14,7 @@ use Appwrite\Utopia\Response as UtopiaResponse;
use Utopia\Database\Database;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
class Delete extends Action
{
@@ -24,7 +24,7 @@ use Utopia\Database\Helpers\ID;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Nullable;
use Utopia\Validator\Numeric;
@@ -24,7 +24,7 @@ use Utopia\Database\Helpers\ID;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Key;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Nullable;
use Utopia\Validator\Numeric;
@@ -21,7 +21,7 @@ use Utopia\Database\Exception\Restricted as RestrictedException;
use Utopia\Database\Helpers\ID;
use Utopia\Database\Query;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -23,7 +23,7 @@ use Utopia\Database\Helpers\ID;
use Utopia\Database\Query;
use Utopia\Database\Validator\Permissions;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\JSON;
use Utopia\Validator\Nullable;
@@ -21,7 +21,7 @@ use Utopia\Database\Exception\Relationship as RelationshipException;
use Utopia\Database\Exception\Structure as StructureException;
use Utopia\Database\Helpers\ID;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\JSON;
use Utopia\Validator\Nullable;
@@ -28,7 +28,7 @@ use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Authorization\Input;
use Utopia\Database\Validator\Permissions;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\JSON;
use Utopia\Validator\Nullable;
@@ -20,7 +20,7 @@ use Utopia\Database\Exception\Restricted as RestrictedException;
use Utopia\Database\Helpers\ID;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\Nullable;
class Delete extends Action
@@ -17,7 +17,7 @@ use Utopia\Database\Exception\Query as QueryException;
use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Nullable;
use Utopia\Validator\Text;
@@ -22,8 +22,8 @@ use Utopia\Database\Validator\Queries;
use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Locale\Locale;
use Utopia\Swoole\Response as SwooleResponse;
class XList extends Action
{
@@ -25,7 +25,7 @@ use Utopia\Database\Helpers\Role;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Permissions;
use Utopia\Database\Validator\UID;
use Utopia\Swoole\Response as SwooleResponse;
use Utopia\Http\Adapter\Swoole\Response as SwooleResponse;
use Utopia\Validator\JSON;
use Utopia\Validator\Nullable;

Some files were not shown because too many files have changed in this diff Show More