Files
GMW/services/backend/src/modules/dashboard/dashboard.service.ts
T

59 lines
1.6 KiB
TypeScript
Raw Normal View History

import { createChildLogger } from "@/shared/logger/index";
import { dashboardRepository } from "./dashboard.repository.js";
const logger = createChildLogger("dashboard.service");
export interface ListUsersQuery {
limit: number;
cursor?: string;
search?: string;
}
export class DashboardService {
async getStats() {
logger.debug("Fetching dashboard stats");
return dashboardRepository.getStats();
}
async getActivity(days: number) {
logger.debug({ days }, "Fetching dashboard activity");
return dashboardRepository.getActivity(days);
}
async listUsers(query: ListUsersQuery) {
logger.debug({ query }, "Listing dashboard users");
return dashboardRepository.listUsers(query);
}
async getUserDetail(userId: string) {
logger.debug({ userId }, "Fetching user detail");
return dashboardRepository.getUserDetail(userId);
}
2026-06-13 12:24:32 +07:00
async listChannels(query: {
limit: number;
search?: string;
guildId?: string;
}) {
2026-06-13 12:24:32 +07:00
logger.debug({ query }, "Listing dashboard channels");
return dashboardRepository.listChannels(query);
}
async getChannelDetail(channelId: string) {
logger.debug({ channelId }, "Fetching channel detail");
return dashboardRepository.getChannelDetail(channelId);
}
async getTopReactions(limit: number) {
logger.debug({ limit }, "Fetching top reactions");
return dashboardRepository.getTopReactions(limit);
}
async getTopReactors(limit: number) {
logger.debug({ limit }, "Fetching top reactors");
return dashboardRepository.getTopReactors(limit);
}
}
export const dashboardService = new DashboardService();