import { ICommon_Route_Res_Project_CreateModule_Data } from "../../../common/routes/response"; import { Err } from "../../../common/status/error"; import { getMysqlInstance } from "../../common/db/mysql"; import { Mapper } from "../../common/entity/mapper"; import { generateDeleteSql, generateQuerySql } from '../../common/util/sql'; import { projectModuleModel } from './../../../common/model/project_module'; class ModuleMapper extends Mapper { constructor() { super(projectModuleModel) } async listModule(projectId:string):Promise { if(!projectId) { throw Err.Common.paramError } let mysql=getMysqlInstance() let arrModuleProject = await mysql.execute(generateQuerySql(projectModuleModel,[],{ project_id:projectId })) let objTemp={} arrModuleProject.forEach((item)=>{ objTemp[item.id]=item.name return item.id }) function _get(parentId:string){ let data=[]; for(let obj of arrModuleProject){ if(obj.parent_module_id==parentId){ data.push({ id:obj.id, name:objTemp[obj.id], data:[] }) } } if(data.length>0){ for(let obj of data){ obj.data=_get(obj.id) } } return data; } let data=_get(null); return data; } async deleteChildren(moduleId:string,projectId:string){ if(!moduleId) { throw Err.Common.paramError } let mysql=getMysqlInstance() let arrModuleProject = await mysql.execute(generateQuerySql(projectModuleModel,[],{ project_id:projectId })) async function _delete(parentId:string){ let data=[]; for(let obj of arrModuleProject){ if(obj.parent_module_id==parentId){ data.push(obj.id) } } await mysql.execute(generateDeleteSql(projectModuleModel,{ id:{ exp:"in", value:data } })) if(data.length>0){ for(let obj of data){ await _delete(obj) } } } await _delete(moduleId); } async deleteByProjectId(projectId:string) { if(!projectId) { throw Err.Project.Module.moduleNotFound } let mysql=getMysqlInstance() await mysql.execute(generateDeleteSql(projectModuleModel,{ project_id:projectId })) } async deleteByProjectIds(projectIds:string[]) { if(!projectIds) { throw Err.Project.Module.moduleNotFound } if(projectIds.length==0) { return; } let mysql=getMysqlInstance() await mysql.execute(generateDeleteSql(projectModuleModel,{ project_id:{ exp:"in", value:projectIds } })) } } export let moduleMapper=new ModuleMapper