mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-09 23:48:36 +01:00
add dashboard
This commit is contained in:
36
dashboard/server/api/metrics/[project_id]/query.ts
Normal file
36
dashboard/server/api/metrics/[project_id]/query.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { EventModel } from "@schema/metrics/EventSchema";
|
||||
import { VisitModel } from "@schema/metrics/VisitSchema";
|
||||
import { ProjectModel } from "@schema/ProjectSchema";
|
||||
|
||||
export default defineEventHandler(async event => {
|
||||
|
||||
const user = getRequestUser(event);
|
||||
if (!user?.logged) return;
|
||||
const project_id = getRequestProjectId(event);
|
||||
if (!project_id) return;
|
||||
const project = await ProjectModel.findOne({ _id: project_id, owner: user.id });
|
||||
if (!project) return;
|
||||
const query = getQuery(event);
|
||||
|
||||
const { orderBy, order, page, limit, type } = query;
|
||||
|
||||
const limitValue = limit ? parseInt(limit.toString()) : 20;
|
||||
const skipValue = page ? (parseInt(page.toString()) - 1) * limitValue : 0;
|
||||
|
||||
if (type == '0') {
|
||||
const visits = await VisitModel.find({ project_id: project }, {}, {
|
||||
limit: limitValue,
|
||||
skip: skipValue,
|
||||
sort: { [(orderBy || '').toString()]: order == 'asc' ? 1 : -1 }
|
||||
});
|
||||
return visits;
|
||||
} else {
|
||||
const events = await EventModel.find({ project_id: project }, {}, {
|
||||
limit: limitValue,
|
||||
skip: skipValue,
|
||||
sort: { [(orderBy || '').toString()]: order == 'asc' ? 1 : -1 }
|
||||
});
|
||||
return events;
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user