@things-factory/operato-tools 9.0.0-beta.27 → 9.0.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-service.js","sourceRoot":"","sources":["../../../server/service/tool-entity/create-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\nimport { getRepository } from '@things-factory/shell'\nimport { Entity, EntityColumn } from '@things-factory/resource-base'\n\nconst { camelCase, startCase, snakeCase, kebabCase } = require('lodash')\nconst { plural } = require('pluralize')\nconst fs = require('fs')\n\n@Resolver()\nexport class OperatoToolCreateService {\n @Query(returns => Boolean, { description: 'Operato Tool Create Service' })\n async toolCreateService(@Arg('id') id: string, @Ctx() context: any): Promise<Boolean> {\n const { domain } = context.state\n // Entity 조회\n const entity: Entity = await getRepository(Entity).findOne({\n where: {\n id\n }\n })\n\n // Entity 컬럼 조회\n const entityColumns: EntityColumn[] = await getRepository(EntityColumn).find({\n where: {\n domain: { id: domain.id },\n entity: { id: entity.id }\n }\n })\n\n let { name = '', bundle = '' } = entity || {}\n\n // 프로젝트 Root Path 구하기\n let appRootPath: string = this.getProjectRootPath()\n let serviceName: string = kebabCase(name)\n // 서비스 경로 생성\n await this.createServicePath(appRootPath, bundle, serviceName)\n\n // 서비스 파일 생성\n await this.createServiceFiles(appRootPath, bundle, name, serviceName, entity, entityColumns)\n\n return true\n }\n\n /**\n * 서비스 연관 파일 생성\n * @param appRootPath\n * @param moduleName\n * @param name\n * @param serviceName\n * @param entity\n * @param entityColumns\n */\n async createServiceFiles(\n appRootPath: string,\n moduleName: string,\n name: string,\n serviceName: string,\n entity: Entity,\n entityColumns: EntityColumn[]\n ) {\n // 이름 케이스 워드 만들기\n let nameMap = {\n name: serviceName,\n tableName: entity.tableName,\n pascalCaseName: startCase(camelCase(name)).replace(/ /g, ''),\n camelCaseName: camelCase(name),\n snakeCaseName: snakeCase(name),\n pluralPascalCaseName: startCase(camelCase(plural(name))).replace(/ /g, ''),\n pluralCamelCaseName: camelCase(plural(name))\n }\n let servicePath = `${appRootPath}/packages/${moduleName}/server/service/`\n\n if (['JSON', 'COPY'].includes(entity.dataProp)) {\n await this.createHistoryServiceFiles(servicePath, serviceName, entity, entityColumns, nameMap)\n } else {\n await this.createNoHistoryServiceFiels(servicePath, serviceName, entity, entityColumns, nameMap)\n }\n }\n\n async createHistoryServiceFiles(\n servicePath: string,\n serviceName: string,\n entity: Entity,\n entityColumns: EntityColumn[],\n nameMap: any\n ) {\n // 서비스 연관 파일 생성\n await this.writeFile(servicePath + `${serviceName}/index.ts`, serviceHistoryIndex, nameMap)\n\n // Entity\n let entityText = this.createEntityText(entity, entityColumns)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}.ts`, entityText, nameMap)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-query.ts`, serviceQuery, nameMap)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-mutation.ts`, serviceMutation, nameMap)\n // TYPE\n let typeText = this.createTypeText(entityColumns)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-type.ts`, typeText, nameMap)\n\n // 이력관리 entity 생성\n let historyText = this.createHistoryEntityText(entity, entityColumns)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-history.ts`, historyText, nameMap)\n let entitySubscriberEntityToJson = ''\n if (entity.dataProp == 'JSON') {\n entitySubscriberEntityToJson = `\n public createHistoryEntity(manager, entity) {\n let history = manager.create(this.historyEntity, entity);\n history.historyJson = JSON.stringify(entity);\n return history;\n }\n `\n await this.writeFile(servicePath + `${serviceName}/event-subscriber.ts`, serviceEntitySubscriber, nameMap)\n } else {\n entitySubscriberEntityToJson = ''\n }\n let subscriberTxt = serviceEntitySubscriber.replace(/{{entityToJson}}/g, entitySubscriberEntityToJson)\n await this.writeFile(servicePath + `${serviceName}/event-subscriber.ts`, subscriberTxt, nameMap)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-history-query.ts`, serviceHistoryQuery, nameMap)\n // TYPE\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-history-type.ts`, sereviceHistoryType, nameMap)\n\n // 전체 서비스 index.ts 파일\n let allServiceIdxPath = servicePath + 'index.ts'\n if ((await this.existsPath(allServiceIdxPath)) == false) {\n await this.writeFile(allServiceIdxPath, allIndex, nameMap)\n }\n\n let allIdxFileTxt = await fs.readFileSync(allServiceIdxPath, 'utf8')\n\n if (allIdxFileTxt.indexOf(`export * from './${nameMap.name}/${nameMap.name}-history'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* EXPORT ENTITY TYPES \\*\\//,\n `/* EXPORT ENTITY TYPES */\\nexport * from './${nameMap.name}/${nameMap.name}-history'`\n )\n }\n\n if (allIdxFileTxt.indexOf(`export * from './${nameMap.name}/${nameMap.name}'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* EXPORT ENTITY TYPES \\*\\//,\n `/* EXPORT ENTITY TYPES */\\nexport * from './${nameMap.name}/${nameMap.name}'`\n )\n }\n\n if (\n allIdxFileTxt.indexOf(\n `import { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers, subscribers as ${nameMap.pascalCaseName}EntitySubscribers } from './${nameMap.name}'`\n ) < 0\n ) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* IMPORT ENTITIES AND RESOLVERS \\*\\//,\n `/* IMPORT ENTITIES AND RESOLVERS */\\nimport { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers, subscribers as ${nameMap.pascalCaseName}EntitySubscribers } from './${nameMap.name}'`\n )\n }\n\n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Entities,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* ENTITIES \\*\\//,\n `/* ENTITIES */\\n\\t...${nameMap.pascalCaseName}Entities,`\n )\n }\n\n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Resolvers,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* RESOLVER CLASSES \\*\\//,\n `/* RESOLVER CLASSES */\\n\\t\\t...${nameMap.pascalCaseName}Resolvers,`\n )\n }\n\n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}EntitySubscribers,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* SUBSCRIBERS \\*\\//,\n `/* SUBSCRIBERS */\\n\\t\\t...${nameMap.pascalCaseName}EntitySubscribers,`\n )\n }\n\n await this.writeFile(allServiceIdxPath, allIdxFileTxt, nameMap)\n }\n\n async createNoHistoryServiceFiels(\n servicePath: string,\n serviceName: string,\n entity: Entity,\n entityColumns: EntityColumn[],\n nameMap: any\n ) {\n // 서비스 연관 파일 생성\n await this.writeFile(servicePath + `${serviceName}/index.ts`, serviceIndex, nameMap)\n\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-query.ts`, serviceQuery, nameMap)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-mutation.ts`, serviceMutation, nameMap)\n\n // Entity\n let entityText = this.createEntityText(entity, entityColumns)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}.ts`, entityText, nameMap)\n\n // TYPE\n let typeText = this.createTypeText(entityColumns)\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-type.ts`, typeText, nameMap)\n\n // 전체 서비스 index.ts 파일\n let allServiceIdxPath = servicePath + 'index.ts'\n if ((await this.existsPath(allServiceIdxPath)) == false) {\n await this.writeFile(allServiceIdxPath, allIndex, nameMap)\n }\n\n let allIdxFileTxt = await fs.readFileSync(allServiceIdxPath, 'utf8')\n\n if (allIdxFileTxt.indexOf(`export * from './${nameMap.name}/${nameMap.name}'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* EXPORT ENTITY TYPES \\*\\//,\n `/* EXPORT ENTITY TYPES */\\nexport * from './${nameMap.name}/${nameMap.name}'`\n )\n }\n\n if (\n allIdxFileTxt.indexOf(\n `import { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers } from './${nameMap.name}'`\n ) < 0\n ) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* IMPORT ENTITIES AND RESOLVERS \\*\\//,\n `/* IMPORT ENTITIES AND RESOLVERS */\\nimport { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers } from './${nameMap.name}'`\n )\n }\n\n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Entities,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* ENTITIES \\*\\//,\n `/* ENTITIES */\\n\\t...${nameMap.pascalCaseName}Entities,`\n )\n }\n\n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Resolvers,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* RESOLVER CLASSES \\*\\//,\n `/* RESOLVER CLASSES */\\n\\t\\t...${nameMap.pascalCaseName}Resolvers,`\n )\n }\n\n await this.writeFile(allServiceIdxPath, allIdxFileTxt, nameMap)\n }\n\n /**\n * 엔티티 타입 텍스트\n * @param entityColumns\n * @returns\n */\n createTypeText(entityColumns: EntityColumn[]) {\n let typeText = sereviceType\n\n let newTypeColumns = entityColumns.map(column => {\n if (column.name == 'id') return ''\n if (column.name == 'domain_id') return ''\n if (column.name == 'created_at') return ''\n if (column.name == 'updated_at') return ''\n if (column.name == 'creator_id') return ''\n if (column.name == 'updater_id') return ''\n\n let fieldType: string = this.getFieldType(column)\n let colTxtType: string = this.getColTxtType(column)\n\n let colName = camelCase(column.name)\n let fieldAnn = `@Field(${fieldType.length == 0 ? '' : 'type =>' + fieldType + ','} { nullable: ${column.nullable} })`\n let columnTxt = `${colName}${column.nullable ? '?' : ''}: ${colTxtType}`\n\n return ' ' + fieldAnn + '\\n ' + columnTxt + '\\n'\n })\n\n typeText = typeText.replace(/{{newTypeColumns}}/g, newTypeColumns.join('\\n'))\n\n let patchTypeColumns = entityColumns.map(column => {\n if (column.name == 'id') return ''\n if (column.name == 'domain_id') return ''\n if (column.name == 'created_at') return ''\n if (column.name == 'updated_at') return ''\n if (column.name == 'creator_id') return ''\n if (column.name == 'updater_id') return ''\n\n let fieldType: string = this.getFieldType(column)\n let colTxtType: string = this.getColTxtType(column)\n\n // patch ?\n column.nullable = true\n\n let colName = camelCase(column.name)\n let fieldAnn = `@Field(${fieldType.length == 0 ? '' : 'type =>' + fieldType + ','} { nullable: ${column.nullable} })`\n let columnTxt = `${colName}${column.nullable ? '?' : ''}: ${colTxtType}`\n\n return ' ' + fieldAnn + '\\n ' + columnTxt + '\\n'\n })\n\n typeText = typeText.replace(/{{patchTypeColumns}}/g, patchTypeColumns.join('\\n'))\n\n return typeText\n }\n\n /**\n * 엔티티 생성 텍스트\n * @param entity\n * @param entityColumns\n * @returns\n */\n createEntityText(entity: Entity, entityColumns: EntityColumn[]) {\n let entityText = serviceEntity\n\n // 컬럼 정렬\n let sortedCols: EntityColumn[] = entityColumns.sort(function (a, b) {\n return a.rank - b.rank\n })\n\n // 컬럼 정보 txt 변환\n let entityColsText: string[] = sortedCols.map(x => {\n return this.columnToEntityColumn(x)\n })\n\n if (['COPY', 'JSON'].includes(entity.dataProp)) {\n entityColsText.push(`\n @VersionColumn({ default: 1 })\n @Field({ nullable: true })\n dataRevisionNo?: number = 1`)\n }\n\n entityText = entityText.replace(/{{entityColumns}}/g, entityColsText.join('\\n'))\n\n // index 정보\n let indexAnn = ``\n let sortedIdxCols: EntityColumn[] = entityColumns\n .filter(x => x.uniqRank && x.uniqRank > 0)\n .sort(function (a, b) {\n return a.uniqRank - b.uniqRank\n })\n\n if (sortedIdxCols.length > 0) {\n indexAnn = `@Index('ix_{{snakeCase name}}_0', ({{camelCase name}}: {{pascalCase name}}) => [{{indexColumns}}], { unique: true })`\n\n let idxColumns = sortedIdxCols.map(x => {\n let colName = x.name\n if (x.name == 'domain_id') colName = 'domain'\n if (x.name == 'creator_id') colName = 'creator'\n if (x.name == 'updater_id') colName = 'updater'\n\n return '{{camelCase name}}.' + camelCase(colName)\n })\n\n indexAnn = indexAnn.replace(/{{indexColumns}}/g, idxColumns.join(','))\n }\n entityText = entityText.replace(/{{indexAnn}}/g, indexAnn)\n\n return entityText\n }\n\n /**\n * 이력관리 엔티티 생성 텍스트\n * @param entity\n * @param entityColumns\n * @returns\n */\n createHistoryEntityText(entity: Entity, entityColumns: EntityColumn[]) {\n let entityText = entity.dataProp == 'JSON' ? serviceEntityHistJson : serviceEntityHistCopy\n\n // 컬럼 정렬\n let sortedCols: EntityColumn[] = entityColumns.sort(function (a, b) {\n return a.rank - b.rank\n })\n\n // 컬럼 정보 txt 변환\n let entityColsText: string[] = sortedCols.map(x => {\n return this.columnToEntityColumn(x)\n })\n\n entityText = entityText.replace(/{{entityColumns}}/g, entityColsText.join('\\n'))\n return entityText\n }\n\n /**\n * EntityColumn to entity column Text\n * @param column\n * @returns\n */\n columnToEntityColumn(column: EntityColumn) {\n if (column.name == 'id') return ''\n if (column.name == 'domain_id') return ''\n if (column.name == 'created_at') return ''\n if (column.name == 'updated_at') return ''\n if (column.name == 'creator_id') return ''\n if (column.name == 'updater_id') return ''\n\n let colType: string = column.colType\n if (column.colType == 'double') colType = 'double precision'\n if (column.colType == 'long') colType = 'bigint'\n if (column.colType == 'string') colType = 'character varying'\n if (column.colType == 'datetime') colType = 'timestamp without time zone'\n\n let colSize: string = ''\n if (column.colType == 'string') {\n //@ts-ignore\n colSize = column.colSize\n }\n\n let fieldType: string = this.getFieldType(column)\n let colTxtType: string = this.getColTxtType(column)\n\n let colName = camelCase(column.name)\n\n let columnAnn = `@Column({name:'${column.name}', type: '${colType}', nullable: ${column.nullable} ${colSize.length == 0 ? '' : ',length:' + colSize} })`\n let fieldAnn = `@Field(${fieldType.length == 0 ? '' : 'type =>' + fieldType + ','} { nullable: ${column.nullable} })`\n let columnTxt = `${colName}${column.nullable ? '?' : ''}: ${colTxtType}`\n\n return ' ' + columnAnn + '\\n ' + fieldAnn + '\\n ' + columnTxt + '\\n'\n }\n\n getFieldType(column: EntityColumn) {\n let fieldType: string = ''\n\n if (column.colType == 'double') fieldType = 'Float'\n if (column.colType == 'float') fieldType = 'Float'\n if (column.colType == 'long') fieldType = 'Int'\n if (column.colType == 'integer') fieldType = 'Int'\n\n return fieldType\n }\n\n getColTxtType(column: EntityColumn) {\n let colTxtType: string = column.colType\n if (column.colType == 'decimal') colTxtType = 'number'\n if (column.colType == 'double') colTxtType = 'number'\n if (column.colType == 'float') colTxtType = 'number'\n if (column.colType == 'integer') colTxtType = 'number'\n if (column.colType == 'long') colTxtType = 'number'\n if (column.colType == 'datetime') colTxtType = 'Date'\n if (column.colType == 'date') colTxtType = 'Date'\n if (column.colType == 'text') colTxtType = 'string'\n return colTxtType\n }\n\n /**\n * 파일 생성\n * @param filePath\n * @param fileText\n * @param nameMap\n */\n async writeFile(filePath: string, fileText: string, nameMap: any) {\n await fs.writeFileSync(filePath, this.replaceNamesMap(fileText, nameMap), 'utf8')\n }\n\n /**\n * 문자열 치환\n * @param text\n * @param nameMap\n * @returns\n */\n replaceNamesMap(text: string, nameMap: any) {\n return text\n .replace(/{{pascalCase name}}/g, nameMap.pascalCaseName)\n .replace(/{{camelCase name}}/g, nameMap.camelCaseName)\n .replace(/{{snakeCase name}}/g, nameMap.snakeCaseName)\n .replace(/{{pluralPascalCase name}}/g, nameMap.pluralPascalCaseName)\n .replace(/{{pluralCamelCase name}}/g, nameMap.pluralCamelCaseName)\n .replace(/{{tableName}}/g, nameMap.tableName)\n .replace(/{{name}}/g, nameMap.name)\n }\n\n /**\n * 서비스 경로 만들기\n * @param appRootPath\n * @param moduleName\n * @param serviceName\n */\n async createServicePath(appRootPath: string, moduleName: string, serviceName: string) {\n let path: string = appRootPath + '/' + 'packages'\n await this.createDir(path)\n\n path = path + '/' + moduleName\n await this.createDir(path)\n\n path = path + '/server'\n await this.createDir(path)\n\n path = path + '/service'\n await this.createDir(path)\n\n path = path + '/' + serviceName\n await this.createDir(path)\n }\n\n /**\n * 프로젝트 Root Path 구하기\n * @returns String\n */\n getProjectRootPath() {\n let appPath: string = process.env.PWD\n let splitPath: string[] = appPath.split('/')\n let pathArr: string[] = []\n for (let i = 0; i < splitPath.length; i++) {\n if (splitPath[i] == 'packages') {\n break\n }\n\n pathArr.push(splitPath[i])\n }\n\n return pathArr.join('/')\n }\n\n /**\n * 디렉토리 생성\n * @param path\n */\n async createDir(path: string) {\n if ((await this.existsPath(path)) == false) fs.mkdirSync(path)\n }\n\n /**\n * Path 존재 여부\n * @param path\n * @returns\n */\n async existsPath(path: string) {\n return await fs.existsSync(path)\n }\n}\n\n/* all service index text index.ts */\nconst allIndex = `\n/* EXPORT ENTITY TYPES */\n\n/* IMPORT ENTITIES AND RESOLVERS */\n\nexport const entities = [ \n /* ENTITIES */\n] \n\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ] \n}\n\nexport const subscribers = [\n /* SUBSCRIBERS */\n]\n`\n\n/* service index text index.ts */\nconst serviceIndex = `\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}Query } from './{{name}}-query'\nimport { {{pascalCase name}}Mutation } from './{{name}}-mutation'\n\nexport const entities = [{{pascalCase name}}]\nexport const resolvers = [{{pascalCase name}}Query, {{pascalCase name}}Mutation]\n`\n\n/* service index text index.ts */\nconst serviceHistoryIndex = `\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}Query } from './{{name}}-query'\nimport { {{pascalCase name}}HistoryQuery } from './{{name}}-history-query'\nimport { {{pascalCase name}}Mutation } from './{{name}}-mutation'\nimport { {{pascalCase name}}History } from './{{name}}-history'\nimport { {{pascalCase name}}HistoryEntitySubscriber } from './event-subscriber'\n\nexport const entities = [{{pascalCase name}}, {{pascalCase name}}History]\nexport const resolvers = [{{pascalCase name}}Query, {{pascalCase name}}HistoryQuery, {{pascalCase name}}Mutation]\nexport const subscribers = [{{pascalCase name}}HistoryEntitySubscriber]\n\n`\n\n/* service Query text {{name}}-query.ts */\nconst serviceQuery = `\nimport { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, ListParam, convertListParams, getRepository, getQueryBuilderFromListParams } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}List } from './{{name}}-type'\n\n@Resolver({{pascalCase name}})\nexport class {{pascalCase name}}Query {\n @Query(returns => {{pascalCase name}}, { description: 'To fetch a {{pascalCase name}}' })\n async {{camelCase name}}(@Arg('id') id: string, @Ctx() context: any): Promise<{{pascalCase name}}> {\n const { domain } = context.state\n return await getRepository({{pascalCase name}}).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => {{pascalCase name}}List, { description: 'To fetch multiple {{pluralPascalCase name}}' })\n async {{pluralCamelCase name}}(@Args(type => ListParam) params: ListParam, @Ctx() context: any): Promise<{{pascalCase name}}List> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository({{pascalCase name}})\n })\n\n const convertedParams = convertListParams(params, domain.id)\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() {{camelCase name}}: {{pascalCase name}}): Promise<Domain> {\n return await getRepository(Domain).findOneBy({id:{{camelCase name}}.domainId})\n }\n\n @FieldResolver(type => User)\n async updater(@Root() {{camelCase name}}: {{pascalCase name}}): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}.updaterId})\n }\n\n @FieldResolver(type => User)\n async creator(@Root() {{camelCase name}}: {{pascalCase name}}): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}.creatorId})\n }\n}\n`\n/* service Query text {{name}}-query.ts */\nconst serviceHistoryQuery = `\nimport { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, ListParam, convertListParams, getRepository, getQueryBuilderFromListParams } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { {{pascalCase name}}History } from './{{name}}-history'\nimport { {{pascalCase name}}HistoryList } from './{{name}}-history-type'\n\n@Resolver({{pascalCase name}}History)\nexport class {{pascalCase name}}HistoryQuery {\n @Query(returns => {{pascalCase name}}History, { description: 'To fetch a {{pascalCase name}}History' })\n async {{camelCase name}}History(@Arg('id') id: string, @Ctx() context: any): Promise<{{pascalCase name}}History> {\n const { domain } = context.state\n return await getRepository({{pascalCase name}}History).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => {{pascalCase name}}HistoryList, { description: 'To fetch multiple {{pluralPascalCase name}}History' })\n async {{camelCase name}}Histories(@Args(type => ListParam) params: ListParam, @Ctx() context: any): Promise<{{pascalCase name}}HistoryList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository({{pascalCase name}}History)\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() {{camelCase name}}History: {{pascalCase name}}History): Promise<Domain> {\n return await getRepository(Domain).findOneBy({id:{{camelCase name}}History.domainId})\n }\n\n @FieldResolver(type => User)\n async updater(@Root() {{camelCase name}}History: {{pascalCase name}}History): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}History.updaterId})\n }\n\n @FieldResolver(type => User)\n async creator(@Root() {{camelCase name}}History: {{pascalCase name}}History): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}History.creatorId})\n }\n}\n`\n/* service mutation text {{name}}-mutation.ts */\nconst serviceMutation = `\nimport { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { {{pascalCase name}} } from './{{name}}'\nimport { New{{pascalCase name}}, {{pascalCase name}}Patch } from './{{name}}-type'\nimport { getRepository } from '@things-factory/shell'\n\n@Resolver({{pascalCase name}})\nexport class {{pascalCase name}}Mutation {\n @Directive('@transaction')\n @Mutation(returns => {{pascalCase name}}, { description: 'To create new {{pascalCase name}}' })\n async create{{pascalCase name}}(@Arg('{{camelCase name}}') {{camelCase name}}: New{{pascalCase name}}, @Ctx() context: any): Promise<{{pascalCase name}}> {\n const { domain, user, tx } = context.state\n\n return await tx.getRepository({{pascalCase name}}).save({\n ...{{camelCase name}},\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => {{pascalCase name}}, { description: 'To modify {{pascalCase name}} information' })\n async update{{pascalCase name}}(\n @Arg('id') id: string,\n @Arg('patch') patch: {{pascalCase name}}Patch,\n @Ctx() context: any\n ): Promise<{{pascalCase name}}> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository({{pascalCase name}})\n const {{camelCase name}} = await repository.findOne(\n {\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'updater', 'creator']\n }\n )\n\n return await repository.save({\n ...{{camelCase name}},\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => [{{pascalCase name}}], { description: \"To modify multiple {{pluralPascalCase name}}' information\" })\n async updateMultiple{{pascalCase name}}(\n @Arg('patches', type => [{{pascalCase name}}Patch]) patches: {{pascalCase name}}Patch[],\n @Ctx() context: any\n ): Promise<{{pascalCase name}}[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const {{camelCase name}}Repo = tx.getRepository({{pascalCase name}})\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await {{camelCase name}}Repo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updRecord = _updateRecords[i]\n const {{camelCase name}} = await {{camelCase name}}Repo.findOne({\n where: { domain: { id: domain.id }, id:updRecord.id },\n relations: ['domain', 'updater', 'creator']\n })\n \n const result = await {{camelCase name}}Repo.save({\n ...{{camelCase name}},\n ...updRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete {{pascalCase name}}' })\n async delete{{pascalCase name}}(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {\n const { domain, tx, user } = context.state\n await tx.getRepository({{pascalCase name}}).remove({ domain, id, updater:user })\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple {{camelCase name}}s' })\n async delete{{pluralPascalCase name}}(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: any\n ): Promise<boolean> {\n const { domain, tx, user } = context.state\n\n let delEntitis = ids.map(id=>{\n return {domain,id,updater:user}\n })\n\n await tx.getRepository({{pascalCase name}}).remove(delEntitis)\n\n return true\n }\n}\n`\n/* service type text {{name}}-type.ts */\nconst sereviceType = `\nimport { ObjectType, Field, InputType, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { {{pascalCase name}} } from './{{name}}'\n\n@InputType()\nexport class New{{pascalCase name}} {\n{{newTypeColumns}}\n}\n\n@InputType()\nexport class {{pascalCase name}}Patch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n{{patchTypeColumns}}\n\n @Field()\n cuFlag: string\n}\n\n@ObjectType()\nexport class {{pascalCase name}}List {\n @Field(type => [{{pascalCase name}}])\n items: {{pascalCase name}}[]\n\n @Field(type => Int)\n total: number\n}\n`\n/* service type text {{name}}-type.ts */\nconst sereviceHistoryType = `\nimport { ObjectType, Field, InputType, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { {{pascalCase name}}History } from './{{name}}-history'\n\n@ObjectType()\nexport class {{pascalCase name}}HistoryList {\n @Field(type => [{{pascalCase name}}History])\n items: {{pascalCase name}}History[]\n\n @Field(type => Int)\n total: number\n}\n`\n\n/* service entity {{name}}.ts */\nconst serviceEntity = `\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n@Entity('{{tableName}}')\n{{indexAnn}}\n@ObjectType({ description: 'Entity for {{pascalCase name}}' })\nexport class {{pascalCase name}} {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain, {\n createForeignKeyConstraints: false\n })\n @Field({ nullable: false })\n domain: Domain\n\n @RelationId(({{camelCase name}}: {{pascalCase name}}) => {{camelCase name}}.domain)\n domainId: string\n\n{{entityColumns}}\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId(({{camelCase name}}: {{pascalCase name}}) => {{camelCase name}}.creator)\n creatorId?: string\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId(({{camelCase name}}: {{pascalCase name}}) => {{camelCase name}}.updater)\n updaterId?: string\n}\n`\n\n/* service entity {{name}}-history.ts */\nconst serviceEntityHistCopy = `\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\n\nimport { ObjectType, Field, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { config } from '@things-factory/env'\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\nimport { {{pascalCase name}} } from './{{name}}'\n\n@Entity('{{tableName}}_histories')\n@Index('ix_{{snakeCase name}}_histories_0', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId,{{camelCase name}}History.dataRevisionNo], { unique: true })\n@Index('ix_{{snakeCase name}}_histories_1', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_2', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_3', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId, {{camelCase name}}History.dataRevisionNo], { unique: true })\n@ObjectType({ description: 'Entity for {{pascalCase name}}History' })\nexport class {{pascalCase name}}History implements HistoryEntityInterface<{{pascalCase name}}>{\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain, {\n createForeignKeyConstraints: false\n })\n @Field({ nullable: false })\n domain: Domain\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.domain)\n domainId: string\n\n @HistoryOriginalIdColumn({type: 'character varying', nullable: false ,length:40})\n @Field({ nullable: false })\n public originalId!: string\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : DATABASE_TYPE == 'mssql'\n ? 'nvarchar'\n : 'varchar',\n enum:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? HistoryActionType\n : undefined,\n length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined: 32\n })\n @Field({ nullable: false })\n public dataRevisionAction!: HistoryActionType\n\n @Column({ default: 1, nullable: false })\n @Field({ nullable: false })\n dataRevisionNo?: number = 1\n\n{{entityColumns}}\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.creator)\n creatorId?: string\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.updater)\n updaterId?: string\n}\n`\n\n/* service entity {{name}}-history.ts */\nconst serviceEntityHistJson = `\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\n\nimport { ObjectType, Field, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { config } from '@things-factory/env'\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\nimport { {{pascalCase name}} } from './{{name}}'\n\n@Entity('{{tableName}}_histories')\n@Index('ix_{{snakeCase name}}_histories_0', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId,{{camelCase name}}History.dataRevisionNo], { unique: true })\n@Index('ix_{{snakeCase name}}_histories_1', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_2', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_3', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId, {{camelCase name}}History.dataRevisionNo], { unique: true })\n@ObjectType({ description: 'Entity for {{pascalCase name}}History' })\nexport class {{pascalCase name}}History implements HistoryEntityInterface<{{pascalCase name}}>{\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain, {\n createForeignKeyConstraints: false\n })\n @Field({ nullable: false })\n domain: Domain\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.domain)\n domainId: string\n\n @HistoryOriginalIdColumn({type: 'character varying', nullable: false ,length:40})\n @Field({ nullable: false })\n public originalId!: string\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : DATABASE_TYPE == 'mssql'\n ? 'nvarchar'\n : 'varchar',\n enum:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? HistoryActionType\n : undefined,\n length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined: 32\n })\n @Field({ nullable: false })\n public dataRevisionAction!: HistoryActionType\n\n @Column({ default: 1, nullable: false })\n @Field({ nullable: false })\n dataRevisionNo?: number = 1\n\n @Column('simple-json', { nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n historyJson?: any\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.creator)\n creatorId?: string\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.updater)\n updaterId?: string\n}\n`\n\n/* service entity subscriber event-subscriber.ts */\nconst serviceEntitySubscriber = `\nimport { EventSubscriber } from 'typeorm'\nimport { HistoryEntitySubscriber } from '@operato/typeorm-history'\n\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}History } from './{{name}}-history'\nimport { getRepository } from '@things-factory/shell'\n\n@EventSubscriber()\nexport class {{pascalCase name}}HistoryEntitySubscriber extends HistoryEntitySubscriber<{{pascalCase name}},{{pascalCase name}}History> {\n public get entity() {\n return {{pascalCase name}}\n }\n\n public get historyEntity() {\n return {{pascalCase name}}History\n }\n\n {{entityToJson}}\n\n async beforeRemoveHistory(history:{{pascalCase name}}History,entity:{{pascalCase name}}){\n let repo = getRepository({{pascalCase name}}History);\n const revNo = await repo.createQueryBuilder()\n .select('max(data_revision_no)', 'rev_no')\n .where('domain_id = :domainId', { domainId: entity.domain.id })\n .andWhere('original_id = :originalId', { originalId: entity.id })\n .getRawOne()\n \n history.dataRevisionNo = revNo ? revNo.rev_no + 1 : 1;\n return history;\n }\n}\n`\n"]}
@@ -0,0 +1,3 @@
1
+ import { OperatoToolCreateMenu } from './create-menu';
2
+ import { OperatoToolCreateService } from './create-service';
3
+ export declare const resolvers: (typeof OperatoToolCreateMenu | typeof OperatoToolCreateService)[];
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvers = void 0;
4
+ const create_menu_1 = require("./create-menu");
5
+ const create_service_1 = require("./create-service");
6
+ exports.resolvers = [create_menu_1.OperatoToolCreateMenu, create_service_1.OperatoToolCreateService];
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/tool-entity/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqD;AACrD,qDAA2D;AAE9C,QAAA,SAAS,GAAG,CAAC,mCAAqB,EAAE,yCAAwB,CAAC,CAAA","sourcesContent":["import { OperatoToolCreateMenu } from './create-menu'\nimport { OperatoToolCreateService } from './create-service'\n\nexport const resolvers = [OperatoToolCreateMenu, OperatoToolCreateService]\n"]}