@etsoo/appscript
Version:
Applications shared TypeScript framework
134 lines (133 loc) • 3.68 kB
JavaScript
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);
}
}