import { JsonRpcClient } from './rpc-client.ts'

interface images {
    src:string
}

interface result<T> {
    code : number
    message : string
    data : T
}

function getRpcClient() {

    return new JsonRpcClient(import.meta.env.RPC_REMOTE, import.meta.env.RPC_PORT)
}

// 新闻列表
export interface InewsIndex {
    id: number
    title: string
    cover: string
    keywords: string
    description: string
    content: string
    created_at: string
    updated_at: string
    column_tag: string
    column_tag_url: string
    second_column_tag: string
    second_column_tag_url: string
}
export async function newsIndex(websiteId:number = 0, limit:number = 10, page:number = 1, filter = []):Promise<{
    code : number
    message : string
    data : InewsIndex[]
    total: number
    hot: {
        cover: string
        id: string
        title: string
        created_at: string
    }[]
    guess: {
        cover: string
        id: string
        title: string
        created_at: string
    }[]
}>{
    const client = getRpcClient()
    const result = await client.call('news/index', {
        id:websiteId,
        limit: limit,
        page: page,
        filter: filter
    })

    return result
}


// 新闻详情
export interface InewsDetail {
    id: number
    title: string
    keywords: string
    description: string
    content: string
    created_at: string
    updated_at: string
    column_tag: string
    column_tag_url: string
    second_column_tag: string
    second_column_tag_url: string
    about: {
        id: number
        title: string
    }[]
    prevNews: {
        id: number
        title: string
    }
    nextNews: {
        id: number
        title: string
    }
}
export async function newsDetail(id:string, config: IWebsiteConfig):Promise<result<InewsDetail>>{
    const client = getRpcClient()
    const result = await client.call('news/view', {
        id:id,
        app_id: config.id
    })
    return result
}


// 网站配置
export interface IWebsiteConfig {
    id: number
    app_extra_tag: string
    app_name: string
    app_description: string
    app_keywords: string
    app_company: string
    app_logo: string
    app_favicon: string
    app_copyright: string
    app_icp: string
    app_filing: string
    app_filing_url: string
    app_baidu_zhanzhang: string
}
export async function websiteConfig(host:string):Promise<result<IWebsiteConfig>>{
    const client = getRpcClient()
    const result = await client.call('website/config', {
        host:host
    })

    return result
}


export interface Icolumns {
    id: number
    title: string
    link: string
    desc:string
}
export async function columns(id: number):Promise<result<Icolumns>>{
    const client = getRpcClient()
    const result = await client.call('column/index', {
        app_id:id,
    })
    return result
}