import { api } from '@/lib/api' import { buildQueryParams } from './lib/utils' import type { GetLogsParams, GetLogsResponse, GetLogStatsParams, GetLogStatsResponse, GetMidjourneyLogsParams, GetTaskLogsParams, UserInfo, } from './types' // ============================================================================ // Generic API Helpers // ============================================================================ function buildApiPath(endpoint: string, isAdmin: boolean): string { return isAdmin ? endpoint : `${endpoint}/self` } async function fetchLogs( endpoint: string, params: T, isAdmin: boolean ): Promise { const paramRecord = params as unknown as Record const queryParams = buildQueryParams({ p: paramRecord.p || 1, page_size: paramRecord.page_size || 20, ...params, }) const path = buildApiPath(endpoint, isAdmin) const res = await api.get(`${path}?${queryParams}`) return res.data } async function fetchLogStats( endpoint: string, params: T, isAdmin: boolean ): Promise { const queryParams = buildQueryParams( params as unknown as Record ) const path = buildApiPath(endpoint, isAdmin) const res = await api.get(`${path}/stat?${queryParams}`) return res.data } // ============================================================================ // Common Log APIs // ============================================================================ export const getAllLogs = (params: GetLogsParams = {}) => fetchLogs('/api/log', params, true) export const getUserLogs = ( params: Omit = {} ) => fetchLogs('/api/log', params, false) export const getLogStats = (params: GetLogStatsParams = {}) => fetchLogStats('/api/log', params, true) export const getUserLogStats = ( params: Omit = {} ) => fetchLogStats('/api/log', params, false) export async function getUserInfo( userId: number ): Promise<{ success: boolean; message?: string; data?: UserInfo }> { const res = await api.get(`/api/user/${userId}`) return res.data } // ============================================================================ // Midjourney (Drawing) Logs API // ============================================================================ export const getAllMidjourneyLogs = (params: GetMidjourneyLogsParams) => fetchLogs('/api/mj', params, true) export const getUserMidjourneyLogs = (params: GetMidjourneyLogsParams) => fetchLogs('/api/mj', params, false) // ============================================================================ // Task Logs API // ============================================================================ export const getAllTaskLogs = (params: GetTaskLogsParams) => fetchLogs('/api/task', params, true) export const getUserTaskLogs = (params: GetTaskLogsParams) => fetchLogs('/api/task', params, false)