all repos — caroster @ 1f62e287c7c44097b6eef54345f3d9d0cd99af5a

[Octree] Group carpool to your event https://caroster.io

backend/config/cron-tasks.ts (view raw)

 1import { DateTime } from "luxon";
 2import pMap from "p-map";
 3
 4export default {
 5  /**
 6   * Send event recap to creators
 7   * Everyday at 08:00
 8   */
 9  "0 8 * * *": async ({ strapi }) => {
10    const events = await strapi.entityService.findMany("api::event.event", {
11      filters: {
12        date: {
13          $gte: DateTime.now().toISODate(),
14        },
15      },
16      limit: -1,
17    });
18
19    await pMap(events, strapi.service("api::event.event").sendDailyRecap, {
20      concurrency: 5,
21    });
22  },
23  /**
24   * Send event recap when it has ended
25   * Only to events with a provided 'date' field
26   * Everyday at 08:30
27   */
28  "30 8 * * *": async ({ strapi }) => {
29    const events = await strapi.entityService.findMany("api::event.event", {
30      filters: {
31        date: {
32          $eq: DateTime.now().minus({ day: 1 }).toISODate(),
33        },
34      },
35      populate: ["travels", "passengers", "passengers.travel"],
36      limit: -1,
37    });
38    await pMap(events, strapi.service("api::event.event").sendEndRecap, {
39      concurrency: 5,
40    });
41  },
42  /**
43   * Clean unpaid events
44   * Every sunday at 02:00
45   */
46  "0 2 * * 0": async ({ strapi }) => {
47    try {
48      const { count } = await strapi.entityService.deleteMany(
49        "api::event.event",
50        {
51          filters: { unpaid: { $eq: true } },
52        }
53      );
54      strapi.log.info(`${count} unpaid events deleted`);
55    } catch (error) {
56      strapi.log.error(`Can't delete unpaid events`);
57      console.error(error);
58    }
59  },
60};