api: generate trigger + sleep insights when creating these
Parents:
12054792 file(s) changed
- api/src/services/sleepRecord.service.ts +19 -1
- api/src/services/trigger.service.ts +19 -1
api/src/services/sleepRecord.service.ts
1 1
import { prisma } from '@app/lib/prisma';
2 2
import { SleepRecord } from '@prisma/client';
3 3
4 4
import { CreateSleepRecordInput } from '@app/schemas';
5 +
import { rollingPeriod } from "@app/lib/queue/processors/insights/utils";
6 +
import { InsightJobName } from "@app/lib/queue/types";
7 +
import { getQueue } from "@app/lib/queue";
5 8
6 9
export const createSleepRecord = async (
7 10
userId: number, input: CreateSleepRecordInput
8 11
): Promise<SleepRecord> => {
9 -
return prisma.sleepRecord.create({
12 +
const sleepRecord = await prisma.sleepRecord.create({
10 13
data: {
11 14
...input,
12 15
userId
13 16
}
14 17
});
18 +
19 +
void enqueueEnergySleepInsight(userId);
20 +
21 +
return sleepRecord;
15 22
};
16 23
17 24
export const getSleepRecordsByUserId = async (
18 25
userId: number,
19 26
params?: {
▸ 45 unchanged lines
65 72
id,
66 73
userId
67 74
}
68 75
})
69 76
}
77 +
78 +
async function enqueueEnergySleepInsight(userId: number): Promise<void> {
79 +
await getQueue('insights').add(
80 +
InsightJobName.EnergySleep,
81 +
{ userId, ...rollingPeriod(7) },
82 +
{
83 +
jobId: `energy-sleep-${userId}-${new Date().toDateString()}`,
84 +
removeOnComplete: true,
85 +
}
86 +
);
87 +
}
api/src/services/trigger.service.ts
1 1
import { prisma } from '@app/lib/prisma';
2 2
import { Trigger } from '@prisma/client';
3 3
4 4
import { CreateTriggerInput } from '@app/schemas';
5 +
import { rollingPeriod } from "@app/lib/queue/processors/insights/utils";
6 +
import { InsightJobName } from "@app/lib/queue/types";
7 +
import { getQueue } from "@app/lib/queue";
5 8
6 9
export const createTrigger = async (
7 10
userId: number, input: CreateTriggerInput
8 11
): Promise<Trigger> => {
9 -
return prisma.trigger.create({
12 +
const trigger = await prisma.trigger.create({
10 13
data: {
11 14
...input,
12 15
userId
13 16
}
14 17
});
18 +
19 +
void enqueueTriggerPatternInsight(userId);
20 +
21 +
return trigger
15 22
};
16 23
17 24
export const getTriggersByUserId = async (
18 25
userId: number,
19 26
params?: {
▸ 45 unchanged lines
65 72
id,
66 73
userId
67 74
}
68 75
})
69 76
}
77 +
78 +
async function enqueueTriggerPatternInsight(userId: number): Promise<void> {
79 +
await getQueue('insights').add(
80 +
InsightJobName.TriggerPattern,
81 +
{ userId, ...rollingPeriod(7) },
82 +
{
83 +
jobId: `trigger-pattern-${userId}-${new Date().toDateString()}`,
84 +
removeOnComplete: true,
85 +
}
86 +
);
87 +
}