import { Http } from "./../uni/uni_http"; import { CommonList, DataRequest, ExtOptionData, Resonpse } from "./data_types"; import { httpPostJson } from "./../http/http"; import { OptionData } from "./types"; export interface DAtA_URI { dataCreate: string dataList: string dataListWithCount: string dataUpdate: string dataFirst: string [key: string]: string } export class DataModel { public table: string; public http?: Http; public dataUri: DAtA_URI = { dataCreate: "zngpay/public/dataCreate", dataList: "zngpay/public/dataList", dataListWithCount: "zngpay/public/dataList", dataUpdate: "zngpay/public/dataUpdate", dataFirst: "zngpay/public/dataFirst" } public constructor(table: string, http?: Http) { this.table = table; this.http = http; } public create(data: OptionData[]) { const formData: Partial = { table: this.table, data: data, }; return this.httpDo(this.dataUri.dataCreate, formData) } public list(where: OptionData[] = [], extOption?: ExtOptionData) { const formData: Partial = { table: this.table, where: where, page: extOption?.page, pageSize: extOption?.pageSize, order: extOption?.order, join: extOption?.join }; return this.httpDo(this.dataUri.dataList, formData) } public listWithCount(where: OptionData[] = [], extOption?: ExtOptionData) { const formData: Partial = { table: this.table, where: where, page: extOption?.page, pageSize: extOption?.pageSize, order: extOption?.order, join: extOption?.join }; return this.httpDo>(this.dataUri.dataListWithCount, formData) } public update(data: OptionData[], where: OptionData[] = []) { const formData: Partial = { table: this.table, where: where, data: data, }; return this.httpDo(this.dataUri.dataUpdate, formData) } public content(where: OptionData[] = [], extOption?: ExtOptionData) { const formData: Partial = { table: this.table, where: where, order: extOption?.order, join: extOption?.join }; const uri = this.dataUri.dataFirst return this.httpDo(uri, formData) } public anyData(key: string, data: DataRequest) { const uri = this.dataUri[key] if (!uri) { return } data.table = this.table return this.httpDo(uri, data) } public httpDo(url: string, data: Partial) { if (this.http) { return this.http.postJson>(url, data) } return httpPostJson>(url, data) } } export const dataModel = (table: string, http?: Http): DataModel => { return new DataModel(table, http) }