import type { CertificateInfo } from '@/api/cert' import type { ModelBase } from '@/api/curd' import type { EnvGroup } from '@/api/env_group' import type { NgxConfig } from '@/api/ngx' import type { ChatComplicationMessage } from '@/api/openai' import type { ConfigStatus, PrivateKeyType } from '@/constants' import { http, useCurdApi } from '@uozi-admin/request' export type SiteStatus = ConfigStatus.Enabled | ConfigStatus.Disabled | ConfigStatus.Maintenance export interface Site extends ModelBase { modified_at: string path: string advanced: boolean name: string filepath: string config: string auto_cert: boolean chatgpt_messages: ChatComplicationMessage[] tokenized?: NgxConfig cert_info?: Record env_group_id: number env_group?: EnvGroup sync_node_ids: number[] urls?: string[] status: SiteStatus } export interface AutoCertRequest { dns_credential_id: number | null challenge_method: string domains: string[] key_type: PrivateKeyType } const baseUrl = '/sites' const site = useCurdApi(baseUrl, { enable: (name: string) => http.post(`${baseUrl}/${encodeURIComponent(name)}/enable`), disable: (name: string) => http.post(`${baseUrl}/${name}/disable`), rename: (oldName: string, newName: string) => http.post(`${baseUrl}/${encodeURIComponent(oldName)}/rename`, { new_name: newName }), get_default_template: () => http.get('default_site_template'), add_auto_cert: (domain: string, data: AutoCertRequest) => http.post(`auto_cert/${encodeURIComponent(domain)}`, data), remove_auto_cert: (domain: string) => http.delete(`auto_cert/${encodeURIComponent(domain)}`), duplicate: (name: string, data: { name: string }) => http.post(`${baseUrl}/${encodeURIComponent(name)}/duplicate`, data), advance_mode: (name: string, data: { advanced: boolean }) => http.post(`${baseUrl}/${encodeURIComponent(name)}/advance`, data), enableMaintenance: (name: string) => http.post(`${baseUrl}/${encodeURIComponent(name)}/maintenance`), }) export default site