import type { DataAcceptor, DataInstance, RequestOptions, Response } from 'open-data-v/data' import type { StaticDataDetail } from '@/api/data' import { getStaticDataApi } from '@/api/data' import type { StoreStaticOption } from './type' const QUICK_TYPE = 'QUICK' class QuickRequestData implements DataInstance { public id?: string public title?: string constructor({ id }: { id: string | undefined }) { this.id = id } public toJSON(): RequestOptions { return { options: { id: this.id || '', title: this.title }, type: 'STATIC' } } public static dumps(data: string, isFormat = false): string | undefined { return isFormat ? JSON.stringify(data, null, '\t') : JSON.stringify(data) } public static loads(data: string): any | undefined { return JSON.parse(data) } public async connect(acceptor: DataAcceptor, options?: Record) { const resp = await this.getRespData(options) acceptor(resp) } public async getRespData(_options?: Record): Promise { const response: Response = { status: 'SUCCESS', data: '' } if (!this.id) { return response } try { const resp = await getStaticDataApi(this.id!) if (resp.status < 400) { const data: StaticDataDetail = resp.data this.title = data.name response.data = data.data } } catch (err: any) { response.status = 'FAILED' response.data = err.stack || err.message } return response } } export { QUICK_TYPE } export default QuickRequestData