mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge branch '1.8.x' into ser-721
This commit is contained in:
@@ -628,7 +628,6 @@ App::init()
|
||||
$queueForFunctions->setPlatform($platform);
|
||||
$queueForBuilds->setPlatform($platform);
|
||||
$queueForMails->setPlatform($platform);
|
||||
$queueForMigrations->setPlatform($platform);
|
||||
|
||||
// Clone the queues, to prevent events triggered by the database listener
|
||||
// from overwriting the events that are supposed to be triggered in the shutdown hook.
|
||||
|
||||
@@ -740,6 +740,7 @@ services:
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_ID
|
||||
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_OPTIONS_FORCE_HTTPS
|
||||
|
||||
appwrite-task-maintenance:
|
||||
entrypoint: maintenance
|
||||
|
||||
@@ -161,7 +161,7 @@ class Database extends Event
|
||||
return $this->document;
|
||||
}
|
||||
|
||||
public function setProject(Document $project): self
|
||||
public function setProject(Document $project): static
|
||||
{
|
||||
$database = $project->getAttribute('database');
|
||||
if (!empty($database)) {
|
||||
|
||||
@@ -92,9 +92,9 @@ class Event
|
||||
* Set queue used for this event.
|
||||
*
|
||||
* @param string $queue
|
||||
* @return Event
|
||||
* @return static
|
||||
*/
|
||||
public function setQueue(string $queue): self
|
||||
public function setQueue(string $queue): static
|
||||
{
|
||||
$this->queue = $queue;
|
||||
|
||||
@@ -114,9 +114,9 @@ class Event
|
||||
/**
|
||||
* Set event name used for this event.
|
||||
* @param string $event
|
||||
* @return Event
|
||||
* @return static
|
||||
*/
|
||||
public function setEvent(string $event): self
|
||||
public function setEvent(string $event): static
|
||||
{
|
||||
$this->event = $event;
|
||||
|
||||
@@ -137,9 +137,9 @@ class Event
|
||||
* Set project for this event.
|
||||
*
|
||||
* @param Document $project
|
||||
* @return self
|
||||
* @return static
|
||||
*/
|
||||
public function setProject(Document $project): self
|
||||
public function setProject(Document $project): static
|
||||
{
|
||||
$this->project = $project;
|
||||
return $this;
|
||||
@@ -159,9 +159,9 @@ class Event
|
||||
* Set platform for this event.
|
||||
*
|
||||
* @param array $platform
|
||||
* @return self
|
||||
* @return static
|
||||
*/
|
||||
public function setPlatform(array $platform): self
|
||||
public function setPlatform(array $platform): static
|
||||
{
|
||||
$this->platform = $platform;
|
||||
return $this;
|
||||
@@ -181,9 +181,9 @@ class Event
|
||||
* Set user for this event.
|
||||
*
|
||||
* @param Document $user
|
||||
* @return self
|
||||
* @return static
|
||||
*/
|
||||
public function setUser(Document $user): self
|
||||
public function setUser(Document $user): static
|
||||
{
|
||||
$this->user = $user;
|
||||
|
||||
@@ -193,9 +193,9 @@ class Event
|
||||
/**
|
||||
* Set user ID for this event.
|
||||
*
|
||||
* @return self
|
||||
* @return static
|
||||
*/
|
||||
public function setUserId(string $userId): self
|
||||
public function setUserId(string $userId): static
|
||||
{
|
||||
$this->userId = $userId;
|
||||
|
||||
@@ -225,9 +225,9 @@ class Event
|
||||
*
|
||||
* @param array $payload
|
||||
* @param array $sensitive
|
||||
* @return self
|
||||
* @return static
|
||||
*/
|
||||
public function setPayload(array $payload, array $sensitive = []): self
|
||||
public function setPayload(array $payload, array $sensitive = []): static
|
||||
{
|
||||
$this->payload = $payload;
|
||||
|
||||
|
||||
@@ -161,19 +161,6 @@ class Messaging extends Event
|
||||
return $this->scheduledAt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set project for this event.
|
||||
*
|
||||
* @param Document $project
|
||||
* @return self
|
||||
*/
|
||||
public function setProject(Document $project): self
|
||||
{
|
||||
$this->project = $project;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the payload for the event
|
||||
*
|
||||
|
||||
+1
@@ -177,6 +177,7 @@ class Decrement extends Action
|
||||
value: $value,
|
||||
min: $min
|
||||
);
|
||||
$document->setAttribute('$' . $this->getCollectionsEventsContext() . 'Id', $collectionId);
|
||||
} catch (ConflictException) {
|
||||
throw new Exception($this->getConflictException());
|
||||
} catch (NotFoundException) {
|
||||
|
||||
+1
@@ -177,6 +177,7 @@ class Increment extends Action
|
||||
value: $value,
|
||||
max: $max
|
||||
);
|
||||
$document->setAttribute('$' . $this->getCollectionsEventsContext() . 'Id', $collectionId);
|
||||
} catch (ConflictException) {
|
||||
throw new Exception($this->getConflictException());
|
||||
} catch (NotFoundException) {
|
||||
|
||||
@@ -62,9 +62,6 @@ class Messaging extends Action
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
$this->adapter = $this->createInternalSMSAdapter();
|
||||
|
||||
$this
|
||||
->desc('Messaging worker')
|
||||
->inject('message')
|
||||
@@ -390,6 +387,10 @@ class Messaging extends Action
|
||||
|
||||
private function sendInternalSMSMessage(Document $message, Document $project, array $recipients, Log $log): void
|
||||
{
|
||||
if ($this->adapter === null) {
|
||||
$this->adapter = $this->createInternalSMSAdapter();
|
||||
}
|
||||
|
||||
if ($this->adapter === null) {
|
||||
Console::warning('Skipped SMS processing. SMS adapter is not set.');
|
||||
return;
|
||||
|
||||
@@ -52,8 +52,6 @@ class Migrations extends Action
|
||||
|
||||
protected array $plan;
|
||||
|
||||
protected array $platform;
|
||||
|
||||
/**
|
||||
* @var array<string, int>
|
||||
*/
|
||||
@@ -108,7 +106,6 @@ class Migrations extends Action
|
||||
$this->deviceForMigrations = $deviceForMigrations;
|
||||
$this->deviceForFiles = $deviceForFiles;
|
||||
$this->plan = $plan;
|
||||
$this->platform = $payload['platform'] ?? [];
|
||||
|
||||
if (empty($payload)) {
|
||||
throw new Exception('Missing payload');
|
||||
@@ -144,10 +141,15 @@ class Migrations extends Action
|
||||
$credentials = $migration->getAttribute('credentials');
|
||||
$migrationOptions = $migration->getAttribute('options');
|
||||
$dataSource = Appwrite::SOURCE_API;
|
||||
$endpoint = $this->platform['endpoint'] ?: ($credentials['endpoint'] ?? 'http://appwrite.test/v1');
|
||||
$database = null;
|
||||
$queries = [];
|
||||
|
||||
if ($credentials['endpoint'] === 'http://localhost/v1') {
|
||||
$platform = Config::getParam('platform', []);
|
||||
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||
$credentials['endpoint'] = $protocol . '://' . $platform['apiHostname'] . '/v1';
|
||||
}
|
||||
|
||||
if ($source === Appwrite::getName() && $destination === DestinationCSV::getName()) {
|
||||
$dataSource = Appwrite::SOURCE_DATABASE;
|
||||
$database = $this->dbForProject;
|
||||
@@ -178,7 +180,7 @@ class Migrations extends Action
|
||||
),
|
||||
SourceAppwrite::getName() => new SourceAppwrite(
|
||||
$credentials['projectId'],
|
||||
$endpoint,
|
||||
$credentials['endpoint'],
|
||||
$credentials['apiKey'],
|
||||
$dataSource,
|
||||
$database,
|
||||
@@ -206,10 +208,13 @@ class Migrations extends Action
|
||||
$destination = $migration->getAttribute('destination');
|
||||
$options = $migration->getAttribute('options', []);
|
||||
|
||||
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||
$platform = Config::getParam('platform', []);
|
||||
|
||||
return match ($destination) {
|
||||
DestinationAppwrite::getName() => new DestinationAppwrite(
|
||||
$this->project->getId(),
|
||||
$this->platform['endpoint'],
|
||||
$protocol . '://' . $platform['apiHostname'] . '/v1',
|
||||
$apiKey,
|
||||
$this->dbForProject,
|
||||
Config::getParam('collections', [])['databases']['collections'],
|
||||
@@ -306,6 +311,8 @@ class Migrations extends Action
|
||||
|
||||
$transfer = $source = $destination = null;
|
||||
|
||||
|
||||
|
||||
try {
|
||||
if (
|
||||
$migration->getAttribute('source') === SourceAppwrite::getName() &&
|
||||
@@ -313,8 +320,13 @@ class Migrations extends Action
|
||||
) {
|
||||
$credentials = $migration->getAttribute('credentials', []);
|
||||
$credentials['projectId'] = $credentials['projectId'] ?? $project->getId();
|
||||
$credentials['endpoint'] = $credentials['endpoint'] ?? $this->platform['endpoint'];
|
||||
$credentials['apiKey'] = $credentials['apiKey'] ?? $tempAPIKey;
|
||||
|
||||
if (empty($credentials['endpoint'])) {
|
||||
$platform = Config::getParam('platform', []);
|
||||
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||
$credentials['endpoint'] = $protocol . '://' . $platform['apiHostname'] . '/v1';
|
||||
}
|
||||
$migration->setAttribute('credentials', $credentials);
|
||||
}
|
||||
|
||||
|
||||
@@ -6118,6 +6118,7 @@ trait DatabasesBase
|
||||
]));
|
||||
$this->assertEquals(200, $inc['headers']['status-code']);
|
||||
$this->assertEquals(6, $inc['body']['count']);
|
||||
$this->assertEquals($collectionId, $inc['body']['$collectionId']);
|
||||
|
||||
// Verify count = 6
|
||||
$get = $this->client->call(Client::METHOD_GET, "/databases/$databaseId/collections/$collectionId/documents/$docId", array_merge([
|
||||
@@ -6229,6 +6230,7 @@ trait DatabasesBase
|
||||
]));
|
||||
$this->assertEquals(200, $dec['headers']['status-code']);
|
||||
$this->assertEquals(9, $dec['body']['count']);
|
||||
$this->assertEquals($collectionId, $dec['body']['$collectionId']);
|
||||
|
||||
$get = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $collectionId . '/documents/' . $documentId, array_merge([
|
||||
'content-type' => 'application/json',
|
||||
|
||||
@@ -7760,6 +7760,7 @@ trait DatabasesBase
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
]));
|
||||
$this->assertEquals(200, $inc['headers']['status-code']);
|
||||
$this->assertEquals($tableId, $inc['body']['$tableId']);
|
||||
$this->assertEquals(6, $inc['body']['count']);
|
||||
|
||||
// Verify count = 6
|
||||
@@ -7872,6 +7873,7 @@ trait DatabasesBase
|
||||
]));
|
||||
$this->assertEquals(200, $dec['headers']['status-code']);
|
||||
$this->assertEquals(9, $dec['body']['count']);
|
||||
$this->assertEquals($tableId, $dec['body']['$tableId']);
|
||||
|
||||
$get = $this->client->call(Client::METHOD_GET, '/tablesdb/' . $databaseId . '/tables/' . $tableId . '/rows/' . $rowId, array_merge([
|
||||
'content-type' => 'application/json',
|
||||
|
||||
Reference in New Issue
Block a user