mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 08:58:35 +00:00
Merge pull request #10522 from appwrite/refactor-schedules
refactor: improve code readability for schedules
This commit is contained in:
commit
dece9c8d53
9 changed files with 35 additions and 22 deletions
|
|
@ -3102,7 +3102,7 @@ App::post('/v1/messaging/messages/email')
|
|||
case MessageStatus::SCHEDULED:
|
||||
$schedule = $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_MESSAGE,
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
@ -3244,7 +3244,7 @@ App::post('/v1/messaging/messages/sms')
|
|||
case MessageStatus::SCHEDULED:
|
||||
$schedule = $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_MESSAGE,
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
@ -3462,7 +3462,7 @@ App::post('/v1/messaging/messages/push')
|
|||
case MessageStatus::SCHEDULED:
|
||||
$schedule = $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_MESSAGE,
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
@ -3863,7 +3863,7 @@ App::patch('/v1/messaging/messages/email/:messageId')
|
|||
if (\is_null($currentScheduledAt) && !\is_null($scheduledAt)) {
|
||||
$schedule = $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_MESSAGE,
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
@ -4084,7 +4084,7 @@ App::patch('/v1/messaging/messages/sms/:messageId')
|
|||
if (\is_null($currentScheduledAt) && !\is_null($scheduledAt)) {
|
||||
$schedule = $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_MESSAGE,
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
@ -4258,7 +4258,7 @@ App::patch('/v1/messaging/messages/push/:messageId')
|
|||
if (\is_null($currentScheduledAt) && !\is_null($scheduledAt)) {
|
||||
$schedule = $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_MESSAGE,
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
|
|||
|
|
@ -262,7 +262,6 @@ const METRIC_SITES_ID_INBOUND = 'sites.{siteInternalId}.inbound';
|
|||
const METRIC_SITES_ID_OUTBOUND = 'sites.{siteInternalId}.outbound';
|
||||
|
||||
// Resource types
|
||||
|
||||
const RESOURCE_TYPE_PROJECTS = 'projects';
|
||||
const RESOURCE_TYPE_FUNCTIONS = 'functions';
|
||||
const RESOURCE_TYPE_SITES = 'sites';
|
||||
|
|
@ -272,10 +271,15 @@ const RESOURCE_TYPE_PROVIDERS = 'providers';
|
|||
const RESOURCE_TYPE_TOPICS = 'topics';
|
||||
const RESOURCE_TYPE_SUBSCRIBERS = 'subscribers';
|
||||
const RESOURCE_TYPE_MESSAGES = 'messages';
|
||||
const RESOURCE_TYPE_EXECUTIONS = 'executions';
|
||||
|
||||
// Resource types for Tokens
|
||||
|
||||
const TOKENS_RESOURCE_TYPE_FILES = 'files';
|
||||
const TOKENS_RESOURCE_TYPE_SITES = 'sites';
|
||||
const TOKENS_RESOURCE_TYPE_FUNCTIONS = 'functions';
|
||||
const TOKENS_RESOURCE_TYPE_DATABASES = 'databases';
|
||||
|
||||
// Resource types for Schedules
|
||||
const SCHEDULE_RESOURCE_TYPE_EXECUTION = 'execution';
|
||||
const SCHEDULE_RESOURCE_TYPE_FUNCTION = 'function';
|
||||
const SCHEDULE_RESOURCE_TYPE_MESSAGE = 'message';
|
||||
|
|
|
|||
|
|
@ -730,8 +730,8 @@ class V19 extends Migration
|
|||
|
||||
if (empty($document->getAttribute('scheduleId', null))) {
|
||||
$schedule = $this->dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'function',
|
||||
'region' => $this->project->getAttribute('region'),
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_FUNCTION,
|
||||
'resourceId' => $document->getId(),
|
||||
'resourceInternalId' => $document->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ use Appwrite\Extend\Exception;
|
|||
use Appwrite\Extend\Exception as AppwriteException;
|
||||
use Appwrite\Functions\Validator\Headers;
|
||||
use Appwrite\Platform\Modules\Compute\Base;
|
||||
use Appwrite\Platform\Tasks\ScheduleExecutions;
|
||||
use Appwrite\SDK\AuthType;
|
||||
use Appwrite\SDK\ContentType;
|
||||
use Appwrite\SDK\Method;
|
||||
|
|
@ -313,7 +312,7 @@ class Create extends Base
|
|||
|
||||
$schedule = $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => ScheduleExecutions::getSupportedResource(),
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_EXECUTION,
|
||||
'resourceId' => $execution->getId(),
|
||||
'resourceInternalId' => $execution->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ namespace Appwrite\Platform\Modules\Functions\Http\Executions;
|
|||
use Appwrite\Event\Event;
|
||||
use Appwrite\Extend\Exception;
|
||||
use Appwrite\Platform\Modules\Compute\Base;
|
||||
use Appwrite\Platform\Tasks\ScheduleExecutions;
|
||||
use Appwrite\SDK\AuthType;
|
||||
use Appwrite\SDK\ContentType;
|
||||
use Appwrite\SDK\Method;
|
||||
|
|
@ -100,7 +99,7 @@ class Delete extends Base
|
|||
if ($status === 'scheduled') {
|
||||
$schedule = $dbForPlatform->findOne('schedules', [
|
||||
Query::equal('resourceId', [$execution->getId()]),
|
||||
Query::equal('resourceType', [ScheduleExecutions::getSupportedResource()]),
|
||||
Query::equal('resourceType', [SCHEDULE_RESOURCE_TYPE_EXECUTION]),
|
||||
Query::equal('active', [true]),
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ class Create extends Base
|
|||
$schedule = Authorization::skip(
|
||||
fn () => $dbForPlatform->createDocument('schedules', new Document([
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'function',
|
||||
'resourceType' => SCHEDULE_RESOURCE_TYPE_FUNCTION,
|
||||
'resourceId' => $function->getId(),
|
||||
'resourceInternalId' => $function->getSequence(),
|
||||
'resourceUpdatedAt' => DateTime::now(),
|
||||
|
|
|
|||
|
|
@ -6,6 +6,12 @@ use Appwrite\Event\Func;
|
|||
use Swoole\Coroutine as Co;
|
||||
use Utopia\Database\Database;
|
||||
|
||||
/**
|
||||
* ScheduleExecutions
|
||||
*
|
||||
* Handles delayed executions by processing one-time scheduled tasks
|
||||
* that are executed at a specific future time.
|
||||
*/
|
||||
class ScheduleExecutions extends ScheduleBase
|
||||
{
|
||||
public const UPDATE_TIMER = 3; // seconds
|
||||
|
|
@ -18,12 +24,12 @@ class ScheduleExecutions extends ScheduleBase
|
|||
|
||||
public static function getSupportedResource(): string
|
||||
{
|
||||
return 'execution';
|
||||
return SCHEDULE_RESOURCE_TYPE_EXECUTION;
|
||||
}
|
||||
|
||||
public static function getCollectionId(): string
|
||||
{
|
||||
return 'executions';
|
||||
return RESOURCE_TYPE_EXECUTIONS;
|
||||
}
|
||||
|
||||
protected function enqueueResources(Database $dbForPlatform, callable $getProjectDB): void
|
||||
|
|
|
|||
|
|
@ -7,8 +7,13 @@ use Cron\CronExpression;
|
|||
use Utopia\CLI\Console;
|
||||
use Utopia\Database\Database;
|
||||
use Utopia\Database\DateTime;
|
||||
use Utopia\Pools\Group;
|
||||
|
||||
/**
|
||||
* ScheduleFunctions
|
||||
*
|
||||
* Handles cron job related executions by processing cron expressions
|
||||
* and scheduling function executions based on recurring schedules.
|
||||
*/
|
||||
class ScheduleFunctions extends ScheduleBase
|
||||
{
|
||||
public const UPDATE_TIMER = 10; // seconds
|
||||
|
|
@ -23,12 +28,12 @@ class ScheduleFunctions extends ScheduleBase
|
|||
|
||||
public static function getSupportedResource(): string
|
||||
{
|
||||
return 'function';
|
||||
return SCHEDULE_RESOURCE_TYPE_FUNCTION;
|
||||
}
|
||||
|
||||
public static function getCollectionId(): string
|
||||
{
|
||||
return 'functions';
|
||||
return RESOURCE_TYPE_FUNCTIONS;
|
||||
}
|
||||
|
||||
protected function enqueueResources(Database $dbForPlatform, callable $getProjectDB): void
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@ class ScheduleMessages extends ScheduleBase
|
|||
|
||||
public static function getSupportedResource(): string
|
||||
{
|
||||
return 'message';
|
||||
return SCHEDULE_RESOURCE_TYPE_MESSAGE;
|
||||
}
|
||||
|
||||
public static function getCollectionId(): string
|
||||
{
|
||||
return 'messages';
|
||||
return RESOURCE_TYPE_MESSAGES;
|
||||
}
|
||||
|
||||
protected function enqueueResources(Database $dbForPlatform, callable $getProjectDB): void
|
||||
|
|
|
|||
Loading…
Reference in a new issue