#Scheduled cloud function

2 messages · Page 1 of 1 (latest)

ripe bison
#

As I understood it is possible to create a function execution from the server sdk with an ISO date as the time. Am I wrong to assume that this will execute the function at the given time?

router.post('/database/events/create', async (req, res) => {
    const {eventName, service, startTime, endTime, destinations, autoSource} = req.body;

    if (!autoSource) return res.status(200).send({success: true});

    const capability = (await databases.listDocuments(process.env.APPWRITE_DATABASE_ID ?? '', process.env.APPWRITE_DATABASE_SERVICE ?? '')).documents.find((document) => document.serviceName === service)?.capability;
    if (!capability) return res.status(500).send({success: false, message: 'Invalid service'});

    const source = (await databases.listDocuments(process.env.APPWRITE_DATABASE_ID ?? '', process.env.APPWRITE_DATABASE_INPUT_DEFINITIONS ?? '')).documents.filter((document) => document.capabilities == capability && document.available == true)[0];
    if (!source) return res.status(500).send({success: false, message: 'Invalid source'});

    await functions.createExecution(
        process.env.APPWRITE_FUNCTIONS_SCHEDULER_ID ?? '',
        JSON.stringify(
            {
                destinations,
                source
            }
        ),
        false,
        '/',
        ExecutionMethod.POST,
        {
            "x-appwrite-request-signature": generateRequestSignature({destinations, source})
        },
        new Date(startTime).toISOString()
    )
        .then((res) => {
            logger.info(`Scheduled function execution for '${eventName}' at ${startTime} was created`);
            // TODO: Update TV Event Document in database to add executionId
            // await databases.updateDocument()
        })
        .catch((err) => logger.error(`Failed to create scheduled function execution for '${eventName}' -> ${err.message}`));

    res.status(200).send({success: true});
});

It just creates an execution that runs instantaneously.

hard plover