UNPKG

@etsoo/appscript

Version:

Applications shared TypeScript framework

134 lines (133 loc) 3.68 kB
import { BaseApi } from "./BaseApi"; import { BusinessUtils } from "../business/BusinessUtils"; /** * Entity API * Follow com.etsoo.CoreFramework.Services.EntityServiceBase */ export class EntityApi extends BaseApi { /** * Constructor * @param flag Identity flag, like 'Product' for product APIs * @param app Application */ constructor(flag, app, api) { super(app, api); this.flag = flag; } /** * Create * @param data Modal data * @param payload Payload * @returns Result */ createBase(data, payload) { return this.api.put(`${this.flag}/Create`, data, payload); } deleteBase(id, payload) { const query = Array.isArray(id) ? "?" + id.map((item) => `ids=${item}`).join("&") : id; return this.api.delete(`${this.flag}/Delete/${query}`, undefined, payload); } /** * List * @param rq Request data * @param payload Payload * @returns Result */ listBase(rq, payload) { return this.api.post(`${this.flag}/List`, BusinessUtils.formatQuery(rq), payload); } /** * Merge * @param rq Request data * @param payload Payload * @returns Result */ mergeBase(rq, payload) { return this.api.put(`${this.flag}/Merge`, rq, payload); } /** * Query * @param rq Request data * @param payload Payload * @param queryKey Additional query key * @returns Result */ queryBase(rq, payload, queryKey = "") { return this.api.post(`${this.flag}/Query${queryKey}`, BusinessUtils.formatQuery(rq), payload); } /** * Query favored country ids * @returns Result */ async queryFavoredCountryIdsBase(api) { api ?? (api = `${this.flag}/QueryFavoredCountryIds`); const result = await this.api.get(api, undefined, { showLoading: false }); if (result == null) return []; return result.map((item) => item.id); } /** * Read * @param id Id * @param payload Payload * @returns Result */ readBase(id, payload) { return this.api.get(`${this.flag}/Read/${id}`, undefined, payload); } /** * Sort * @param items Items to sort * @param payload Payload * @returns Result */ sortBase(items, payload) { const rq = {}; items.forEach((item, index) => (rq[item.id] = index)); return this.api.put(`${this.flag}/Sort`, rq, payload); } /** * Sort with category * @param category Category for grouping * @param items Items to sort * @param method Sort method * @param payload Payload * @returns Result */ sortWith(category, items, method = "Sort", payload) { const data = {}; items.forEach((item, index) => (data[item.id] = index)); return this.api.put(`${this.flag}/${method}`, { category, data }, payload); } /** * Update * @param data Modal data * @param payload Payload * @returns Result */ updateBase(data, payload) { return this.api.put(`${this.flag}/Update`, data, payload); } /** * Read for update * @param id Id * @param payload Payload * @returns Result */ updateReadBase(id, payload) { return this.api.get(`${this.flag}/UpdateRead/${id}`, undefined, payload); } /** * Update status * @param rq Request data * @param payload Payload * @returns Result */ updateStatusBase(rq, payload) { return this.api.put(`${this.flag}/UpdateStatus`, rq, payload); } }