import { useApi } from '@/composables/useApi' import { jsonInit } from '@/lib/directoryRequest' import { reassignQuery } from '@/lib/directory' export type SiteRobots = 'index' | 'noindex' export interface Site { id: number name: string key: string base_url: string default_social_image_id: number | null default_robots: SiteRobots locale: string | null site_name?: string title_template?: string default_description?: string is_default: boolean article_count: number } export interface NewSite { name: string key: string base_url: string default_robots: SiteRobots locale?: string default_social_image_id?: number site_name?: string title_template?: string default_description?: string is_default: boolean } export interface SitePatch { name?: string base_url?: string default_robots?: SiteRobots locale?: string | null default_social_image_id?: number | null site_name?: string title_template?: string default_description?: string } export function useSites() { const { request } = useApi() function listSites(): Promise { return request('/v1/site/') } function createSite(site: NewSite): Promise { return request('/v1/site/', jsonInit('POST', site)) } function updateSite(id: number, patch: SitePatch): Promise { return request(`/v1/site/${id}`, jsonInit('PATCH', patch)) } function setDefaultSite(id: number): Promise { return request(`/v1/site/${id}/default`, { method: 'PATCH' }) } function deleteSite(id: number, reassignTo?: number): Promise { return request(`/v1/site/${id}${reassignQuery(reassignTo)}`, { method: 'DELETE', }) } return { listSites, createSite, updateSite, setDefaultSite, deleteSite } }