Files
litlyx/dashboard/server/services/AggregationService.ts
2025-11-28 16:49:20 +01:00

26 lines
1.3 KiB
TypeScript

import { getAllDomains } from "../controllers/DomainController";
import { visitController } from "../controllers/VisitController";
import { sessionController } from "../controllers/SessionController";
import { bouncingController } from "../controllers/BouncingController";
import { durationController } from "../controllers/DurationController";
import { ProjectCountModel } from "~/shared/schema/project/ProjectsCounts";
export async function executeAggregationProject(project_id: string, date: Date, override: boolean) {
const domains = await getAllDomains({ project_id, date });
await Promise.all([
visitController.aggregate({ project_id, date, domains, override }),
sessionController.aggregate({ project_id, date, domains, override }),
bouncingController.aggregate({ project_id, date, domains, override }),
durationController.aggregate({ project_id, date, domains, override })
]);
}
export async function executeAggregation(date: Date) {
const targets = await ProjectCountModel.find({ visits: { $gte: 500_000 } }, {}, { lean: true, sort: { visits: -1 } });
for (let i = 0; i < targets.length; i++) {
const target = targets[i];
const project_id = target.project_id.toString();
await executeAggregationProject(project_id, date, true);
}
}