cc-core-cli
Version:
Command Line Interface tool for generating project templates for the (Your Platform's Name) platform.
445 lines (399 loc) • 11.4 kB
text/typescript
import * as _ from "lodash";
import {
Get,
Post,
Put,
Patch,
Body,
Param,
Delete,
Query,
Controller
} from "@nestjs/common";
import {
CoreLogService,
CoreService,
CoreSettingService
} from "./core.service";
import {
Basic,
SearchResultDto,
convertFilter
} from '@shopstack/cc-core-lib/core'
export class CoreController {
constructor(
private readonly service: CoreService,
private readonly serviceLog: CoreLogService,
private readonly serviceSetting: CoreSettingService
) { }
private _convertFields(fields: string) {
return _.isEmpty(fields) ? undefined : fields.split(",");
}
async init( params: any): Promise<string> {
if (
!["mail_setting"].includes(params.entity) &&
params.entity.indexOf("_setting") !== -1
) {
return "Not implement yet.";
}
return this.service.init(params.entity);
}
async initData( params: any): Promise<void> {
await this.service.initData(params.entity);
}
async search(
params: any,
query: any
): Promise<SearchResultDto> {
if (
!["mail_setting"].includes(params.entity) &&
params.entity.indexOf("_setting") !== -1
) {
return this.serviceSetting.getSetting(params.entity);
} else {
const { keywords, filters, page, page_size, sort, grouping, fields } = query;
return this.service.search(
params.entity,
keywords,
convertFilter(filters),
page ? parseInt(page, 10) : 1,
page_size ? parseInt(page_size, 10) : 10,
sort,
this._convertFields(grouping),
false,
this._convertFields(fields)
);
}
}
async find( params: any, query: any): Promise<any> {
const { keywords, filters, sort, fields } = query;
return this.service.find(
params.entity,
keywords,
convertFilter(filters),
sort,
false,
this._convertFields(fields)
);
}
workflowActions( params: any): Promise<any> {
return this.service.workflowActions(params.entity, params.id);
}
aggregate( params: any, query: any): any {
return this.service.aggregate(params.entity, query.query);
}
aggregateBody( params: any, body: any): any {
return this.service.aggregate(
params.entity,
JSON.stringify({ query: body })
);
}
async count( params: any, query: any): Promise<any> {
const { filters, keywords } = query;
return this.service.count(params.entity, convertFilter(filters), keywords);
}
async findWithLayout(
query: any,
params: any
): Promise<any> {
const { keywords, filters, sort } = query;
return this.service.findWithLayout(
params.entity,
params.layout,
keywords,
convertFilter(filters),
sort
);
}
aggregateWithLayout( params: any, query: any): any {
return this.service.aggregate(params.entity, query.query);
}
async countWithLayout(
params: any,
query: any
): Promise<any> {
const { filters, keywords } = query;
return this.service.count(params.entity, convertFilter(filters), keywords);
}
async findOneOrSearchWithLayout(
params: any,
query: any
): Promise<any> {
const { keywords, filters, page, page_size, sort, grouping } = query;
const searchKey = `${keywords || ""}${
_.isEmpty(filters) ? "" : JSON.stringify(filters)
}${page || ""}${page_size || ""}${sort || ""}${grouping || ""}`;
if (
!["mail_setting"].includes(params.entity) &&
params.entity.indexOf("_setting") !== -1
) {
return this.serviceSetting.getSetting(params.entity, params.key);
} else {
if (
/^(?=[a-f\d]{24}$)(\d+[a-f]|[a-f]+\d)/i.test(params.key) ||
_.isEmpty(searchKey)
) {
return this.service.findOne(
params.entity,
params.key,
this._convertFields(query.fields)
);
}
return this.service.searchWithLayout(
params.entity,
params.key,
keywords,
convertFilter(filters),
page ? parseInt(page, 10) : 1,
page_size ? parseInt(page_size, 10) : 10,
sort,
this._convertFields(grouping)
);
}
}
dataIdsSearch( params: any, query: any): any {
const { keywords, filters, page, page_size, sort } = query;
return this.service.searchIds(
params.entity,
keywords,
convertFilter(filters),
page ? parseInt(page, 10) : 1,
page_size ? parseInt(page_size, 10) : 10,
sort
);
}
async searchWithLayout( params: any): Promise<any> {
return this.service.findOneWithLayout(
params.entity,
params.layout,
params.id
);
}
async findWithLocale(
params: any,
query: any
): Promise<any> {
const { keywords, filters, sort } = query;
return this.service.findWithLocale(
params.entity,
params.locale,
keywords,
convertFilter(filters),
sort
);
}
async dataWithLocale( params: any): Promise<any> {
return this.service.dataWithLocale(
params.entity,
params.layout,
params.id,
params.locale
);
}
async create( params: any, data: any): Promise<any> {
return this.service.create(params.entity, data);
}
async setSetting( params: any, body: any): Promise<any> {
return this.serviceSetting.setSetting(params.entity, body);
}
async update( params: any, data: any): Promise<any> {
if (
!["mail_setting"].includes(params.entity) &&
params.entity.indexOf("_setting") !== -1
) {
return this.serviceSetting.setSetting(params.entity, data, params.id);
} else {
return this.service.update(params.entity, params.id, data);
}
}
async approve( params: any, data: any): Promise<any> {
return this.service.approve(params.entity, params.id, data);
}
async approveWithLayout(
params: any,
data: any
): Promise<any> {
return this.service.approve(params.entity, params.id, data);
}
async updateWithLayout(
params: any,
data: any
): Promise<any> {
return this.service.update(params.entity, params.id, data);
}
async setDataLocale( params: any, data: any): Promise<any> {
return this.service.setDataLocale(
params.entity,
params.id,
params.locale,
data
);
}
async delete( params: any): Promise<any> {
return this.service.delete(params.entity, params.id);
}
async deleteWithLayout( params: any): Promise<any> {
return this.service.delete(params.entity, params.id);
}
async bulkCreate( params: any, body: any): Promise<any> {
return this.service.bulkCreate(params.entity, body.data);
}
async bulkUpdate( params: any, body: any): Promise<any> {
return this.service.bulkUpdate(params.entity, body.data);
}
async bulkDelete( params: any, data: any): Promise<any> {
return this.service.bulkDelete(params.entity, data.ids);
}
async bulkUpdateWithLayout(
params: any,
body: any
): Promise<any> {
return this.service.bulkUpdate(params.entity, body.data);
}
async bulkDeleteWithLayout(
params: any,
data: any
): Promise<any> {
return this.service.bulkDelete(params.entity, data.ids);
}
async createWithLayout(
params: any,
data: any
): Promise<any> {
return this.service.create(params.entity, data);
}
async prepareGenerateData(
params: any,
data: any
): Promise<any> {
return this.service.prepareGenerateData(params.entity, data);
}
async generateData(
params: any,
data: any
): Promise<boolean> {
return this.service.generateData(params.entity, data);
}
async progressGenerateData(
params: any,
data: any
): Promise<any> {
return this.service.progressGenerateData(params.entity, data.ref_id);
}
async executeWorkflowAction(
params: any,
body: any
): Promise<boolean> {
return this.service.executeWorkflowAction(params.entity, params.id, body);
}
async generateDataWithLayout( params: any): Promise<boolean> {
return this.service.generateData(params.entity);
}
async exampleOutputMapping(
params: any,
data: any
): Promise<any> {
return this.service.exampleOutputMapping(params.entity, data);
}
async searchText(
params: any,
data: any
): Promise<any> {
return this.service.searchText(params.entity, data);
}
async purgeLog( params: any, body): Promise<boolean> {
return this.serviceLog.purgeLog(params.entity, body);
}
async defaultPermission( params: any): Promise<string> {
return this.serviceSetting.defaultPermission(params.entity);
}
async setPermission(
params: any,
body: any
): Promise<string> {
const result = await this.serviceSetting.setPermission(params.entity, body);
return result;
}
async importValidate( params: any, body): Promise<boolean> {
return this.service.importValidate(
params.entity,
body.id,
body.code,
body.data,
body.data_text,
body.original_data,
body.filename
);
}
}