import { api } from './client' import type { Account, AccountRequest, AdminConfig, AdminConfigResponse, DashboardOverview, ExecutionLog, LogPage, MessageGateway, Providers, Rule, RuleRequest, SiteInfo, Timer, TimerRequest, UserInfo, } from './types' export const siteApi = { info: () => api.get('/site'), } export const userApi = { register: (username: string, password: string) => api.post('/user/registry', { username, password }), login: (username: string, password: string) => api.post('/user/login', { username, password }), logout: () => api.post('/user/logout'), info: () => api.get('/user/info'), changePassword: (oldPassword: string, newPassword: string) => api.post('/user/password', { old_password: oldPassword, new_password: newPassword, }), updateNotify: (dingtalkConfig: string | null) => api.put('/user/notify', { dingtalk_config: dingtalkConfig }), } export const dashboardApi = { overview: () => api.get('/dashboard'), } export const providerApi = { all: () => api.get('/providers'), } export const timerApi = { list: () => api.get('/timers/'), get: (id: number) => api.get<{ timer: Timer; rule_count: number }>(`/timers/${id}`), create: (body: TimerRequest) => api.post('/timers/', body), update: (id: number, body: TimerRequest) => api.put(`/timers/${id}`, body), sign: (id: number) => api.post(`/timers/${id}/sign`), signAll: () => api.post<{ signed: number; last_sign: number }>('/timers/sign'), trigger: (id: number) => api.post<{ total: number; failed: string[] }>(`/timers/${id}/trigger`), checkDelete: (id: number) => api.get(`/timers/${id}/check`), remove: (id: number) => api.delete(`/timers/${id}`), } export const ruleApi = { list: (timerId?: number) => api.get('/rules/', timerId ? { timer_id: timerId } : undefined), create: (body: RuleRequest) => api.post('/rules/', body), update: (id: number, body: RuleRequest) => api.put(`/rules/${id}`, body), test: (id: number) => api.post(`/rules/${id}/test`), remove: (id: number) => api.delete(`/rules/${id}`), } export const accountApi = { list: (type?: string) => api.get('/accounts/', type ? { type } : undefined), create: (body: AccountRequest) => api.post('/accounts/', body), update: (id: number, body: AccountRequest) => api.put(`/accounts/${id}`, body), test: (id: number) => api.post(`/accounts/${id}/test`), checkDelete: (id: number) => api.get(`/accounts/${id}/check`), remove: (id: number) => api.delete(`/accounts/${id}`), } export const logApi = { list: (params: { page?: number; page_size?: number; rule_id?: number; success?: string }) => api.get('/logs/', params), clear: () => api.delete('/logs/'), } export const gatewayApi = { list: () => api.get('/gateways/'), create: (name: string) => api.post('/gateways/', { name }), remove: (id: number) => api.delete(`/gateways/${id}`), } export const adminApi = { getConfig: () => api.get('/admin/config'), updateConfig: (body: AdminConfig) => api.put('/admin/config', body), } export type { ExecutionLog }