kschema-fs-api-gen-post-actions 1.7.4 → 1.9.2
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.
- package/bin/{v7 → v8}/tasks/actions/insertGenPk.js +4 -3
- package/bin/v9/tasks/actions/InsertGenPk/steps/resolveFolderName.js +20 -0
- package/bin/v9/tasks/actions/WithMail/actions.json +26 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/common/readFile.js +8 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/common/writeFile.js +10 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/buildImport.js +9 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +8 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +10 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/index.js +47 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/buildUseLine.js +5 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +9 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +10 -0
- package/bin/v9/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/index.js +56 -0
- package/bin/v9/tasks/actions/WithMail/steps/announce.js +9 -0
- package/bin/v9/tasks/actions/WithMail/steps/createFolder.js +7 -0
- package/bin/v9/tasks/actions/WithMail/steps/decideTemplate.js +3 -0
- package/bin/v9/tasks/actions/WithMail/steps/locateDestination.js +7 -0
- package/bin/v9/tasks/actions/WithMail/steps/locateSource.js +18 -0
- package/bin/v9/tasks/actions/WithMail/steps/updateAppJs.js +7 -0
- package/bin/v9/tasks/actions/WithMail/steps/updateEndPointsFile.js +30 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/config/getSchema.js +20 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/controller.js +27 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/errors.js +11 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/getData.js +11 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/getSchema.js +11 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/buildMutate.js +32 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/buildQuery.js +32 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/file/read.js +7 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/file/write.js +5 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/pkHelper.js +19 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validate.js +27 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validateHelper.js +27 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/default.js +5 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/enum.js +7 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/length.js +11 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/minMax.js +11 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/pattern.js +8 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/required.js +5 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/type.js +15 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/helpers/validators/unique.js +8 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/insertBase.js +9 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/insertGenPk.js +31 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/middleware.js +19 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/rest.http +7 -0
- package/bin/v9/tasks/actions/WithMail/template/v3/service.js +16 -0
- package/bin/v9/tasks/actions/insertAsIs.js +61 -0
- package/bin/{v6 → v9}/tasks/actions/insertGenPk.js +6 -13
- package/index.js +14 -2
- package/package.json +3 -3
- package/bin/v7/tasks/actions/WithMail/steps/createHttpFile.js +0 -12
- package/bin/v7/tasks/actions/WithMail/steps/updateEndPointsJs.js +0 -16
- /package/bin/{v6 → v8}/core/createFolder.js +0 -0
- /package/bin/{v6 → v8}/core/parseInput.js +0 -0
- /package/bin/{v6 → v8}/core/resolveCommand.js +0 -0
- /package/bin/{v6 → v8}/core/showUsage.js +0 -0
- /package/bin/{v6 → v8}/start.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/actions.json +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/common/readFile.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/common/writeFile.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/buildImport.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateImports/index.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/buildUseLine.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/UpdateRoutesJs/updateUse/index.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/announce.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/createFolder.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/decideTemplate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/locateDestination.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/locateSource.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/resolveFolderName.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/updateAppJs.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/steps/updateEndPointsFile.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/config/getSchema.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/controller.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/errors.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/getData.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/getSchema.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/buildMutate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/buildQuery.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/file/read.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/file/write.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/pkHelper.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validateHelper.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/default.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/enum.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/length.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/minMax.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/pattern.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/required.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/type.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/helpers/validators/unique.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/insertBase.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/insertGenPk.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/middleware.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/rest.http +0 -0
- /package/bin/{v6 → v8}/tasks/actions/InsertGenPk/template/v1/service.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/actions.json +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/common/readFile.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/common/writeFile.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/buildImport.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateImports/index.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/buildUseLine.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/UpdateRoutesJs/updateUse/index.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/announce.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/createFolder.js +0 -0
- /package/bin/{v6/tasks/actions/InsertGenPk → v8/tasks/actions/WithMail}/steps/createHttpFile.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/decideTemplate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/locateDestination.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/locateSource.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/resolveFolderName.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/updateAppJs.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/steps/updateEndPointsFile.js +0 -0
- /package/bin/{v6/tasks/actions/InsertGenPk → v8/tasks/actions/WithMail}/steps/updateEndPointsJs.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v1/controller.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v1/errors.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v1/middleware.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v1/service.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v2/Mail/sendMailCC.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v2/Mail/welcome.html +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v2/controller.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v2/errors.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v2/middleware.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v2/rest.http +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v2/service.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/Mail/sendMailCC.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/Mail/welcome.html +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/config/getSchema.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/controller.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/errors.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/getData.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/getSchema.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/buildMutate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/buildQuery.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/file/read.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/file/write.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/pkHelper.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validate.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validateHelper.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/default.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/enum.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/length.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/minMax.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/pattern.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/required.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/type.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/helpers/validators/unique.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/insertBase.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/insertGenPk.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/middleware.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/rest.http +0 -0
- /package/bin/{v6 → v8}/tasks/actions/WithMail/template/v3/service.js +0 -0
- /package/bin/{v6 → v8}/tasks/actions/withMail.js +0 -0
- /package/bin/{v6 → v8}/tasks/core/createFolder.js +0 -0
- /package/bin/{v6 → v8}/tasks/core/parseInput.js +0 -0
- /package/bin/{v6 → v8}/tasks/core/resolveCommand.js +0 -0
- /package/bin/{v6 → v8}/tasks/core/showUsage.js +0 -0
- /package/bin/{v7 → v9}/core/createFolder.js +0 -0
- /package/bin/{v7 → v9}/core/parseInput.js +0 -0
- /package/bin/{v7 → v9}/core/resolveCommand.js +0 -0
- /package/bin/{v7 → v9}/core/showUsage.js +0 -0
- /package/bin/{v7 → v9}/start.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/actions.json +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/common/readFile.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/common/writeFile.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateImports/buildImport.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateImports/index.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateUse/buildUseLine.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/UpdateRoutesJs/updateUse/index.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/announce.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/createFolder.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/decideTemplate.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/locateDestination.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/locateSource.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/resolveFolderName.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/updateAppJs.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/steps/updateEndPointsFile.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/config/getSchema.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/controller.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/errors.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/getData.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/getSchema.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/buildMutate.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/buildQuery.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/file/read.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/file/write.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/pkHelper.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validate.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validateHelper.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/default.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/enum.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/length.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/minMax.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/pattern.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/required.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/type.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/helpers/validators/unique.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/insertBase.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/insertGenPk.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/middleware.js +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/rest.http +0 -0
- /package/bin/{v7/tasks/actions/InsertGenPk → v9/tasks/actions/InsertAsIs}/template/v1/service.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/actions.json +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/common/readFile.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/common/writeFile.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateImports/buildImport.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateImports/checkDuplicate.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateImports/findInsertIndex.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateImports/index.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateUse/buildUseLine.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateUse/checkDuplicate.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateUse/findInsertIndex.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/UpdateRoutesJs/updateUse/index.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/announce.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/createFolder.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/decideTemplate.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/locateDestination.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/locateSource.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/updateAppJs.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/steps/updateEndPointsFile.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/config/getSchema.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/controller.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/template/v1/errors.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/getData.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/getSchema.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/buildMutate.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/buildQuery.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/file/read.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/file/write.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/pkHelper.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validate.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validateHelper.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/default.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/enum.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/length.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/minMax.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/pattern.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/required.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/type.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/helpers/validators/unique.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/insertBase.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/insertGenPk.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail → v9/tasks/actions/InsertGenPk}/template/v1/middleware.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/rest.http +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/InsertGenPk/template/v1}/service.js +0 -0
- /package/bin/{v6 → v9}/tasks/actions/WithMail/steps/createHttpFile.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/steps/resolveFolderName.js +0 -0
- /package/bin/{v6 → v9}/tasks/actions/WithMail/steps/updateEndPointsJs.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v1/controller.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v2 → v9/tasks/actions/WithMail/template/v1}/errors.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v2 → v9/tasks/actions/WithMail/template/v1}/middleware.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v1/service.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v2/Mail/sendMailCC.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v2/Mail/welcome.html +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v2/controller.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/WithMail/template/v2}/errors.js +0 -0
- /package/bin/{v7/tasks/actions/WithMail/template/v3 → v9/tasks/actions/WithMail/template/v2}/middleware.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v2/rest.http +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v2/service.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v3/Mail/sendMailCC.js +0 -0
- /package/bin/{v7 → v9}/tasks/actions/WithMail/template/v3/Mail/welcome.html +0 -0
- /package/bin/{v7 → v9}/tasks/actions/withMail.js +0 -0
- /package/bin/{v7 → v9}/tasks/core/createFolder.js +0 -0
- /package/bin/{v7 → v9}/tasks/core/parseInput.js +0 -0
- /package/bin/{v7 → v9}/tasks/core/resolveCommand.js +0 -0
- /package/bin/{v7 → v9}/tasks/core/showUsage.js +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import generateRest from "kschema-fs-api-gen-rest";
|
|
4
|
+
import fixEndpointsJs from "express-fix-endpoints-js";
|
|
4
5
|
|
|
5
6
|
import { locateSource } from "./InsertGenPk/steps/locateSource.js";
|
|
6
7
|
import { locateDestination } from "./InsertGenPk/steps/locateDestination.js";
|
|
@@ -42,8 +43,8 @@ const startFunc = async ({ cmd = "", toPath, isAnnounce = true, checkBeforeCreat
|
|
|
42
43
|
|
|
43
44
|
if (createFolderResponse.KTF) {
|
|
44
45
|
const fromEndPointsJs = await fixEndpointsJs({
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
endPointsJsPath: path.join(localToPath, "end-points.js"),
|
|
47
|
+
inActionName: cmd
|
|
47
48
|
});
|
|
48
49
|
|
|
49
50
|
generateRest({
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
|
|
3
|
+
export default function resolveFolderName({ name, inDefaultFolderName = "InsertGenPk" }) {
|
|
4
|
+
const defaultFolderName = inDefaultFolderName;
|
|
5
|
+
|
|
6
|
+
// case 1: force new → timestamp
|
|
7
|
+
if (name === null) {
|
|
8
|
+
name = defaultFolderName;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
// case 2: user provided → strict
|
|
12
|
+
if (fs.existsSync(name)) {
|
|
13
|
+
return {
|
|
14
|
+
KTF: false,
|
|
15
|
+
KReason: `Folder already exists : ${name}`
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return name;
|
|
20
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cmd": "WithMail",
|
|
3
|
+
"file": "withMail",
|
|
4
|
+
"exportFile": "WithMail",
|
|
5
|
+
"group": "PostMethods",
|
|
6
|
+
"description": "Generate WithMail POST action",
|
|
7
|
+
"endPointsJs": {
|
|
8
|
+
"importLines": {
|
|
9
|
+
"toInsertLine": "import funcFromWithMail from './WithMail/controller.js';",
|
|
10
|
+
"duplicationCheck": "from './WithMail/controller.js'",
|
|
11
|
+
"insertAfter": [
|
|
12
|
+
"import funcFrom",
|
|
13
|
+
"import express"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"useLines": {
|
|
17
|
+
"toInsertLine1": "router.get('/WithMail', (req, res) => funcFromWithMail({ res, inTablePath: tablePath }));",
|
|
18
|
+
"toInsertLine": "router.post('/WithMail', express.json(), (req, res) => funcFromWithMail({ req, res, inTablePath: tablePath, inConfigPath: configPath }));",
|
|
19
|
+
"duplicationCheck": "router.use('/WithMail'",
|
|
20
|
+
"insertAfter": [
|
|
21
|
+
"router.",
|
|
22
|
+
"const router = "
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const buildImport = ({ inFuncName, inEndpoint }) => {
|
|
2
|
+
const localEndpoint = inEndpoint;
|
|
3
|
+
|
|
4
|
+
const safeName = localEndpoint.replace(/[^a-zA-Z0-9]/g, "_");
|
|
5
|
+
|
|
6
|
+
return `import { ${inFuncName} } from "./${localEndpoint}/controller.js";`;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default buildImport;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const findInsertIndex = (inContent) => {
|
|
2
|
+
const localContent = inContent;
|
|
3
|
+
|
|
4
|
+
const matches = [...localContent.matchAll(/^\s*import.*$/gm)];
|
|
5
|
+
const last = matches.at(-1);
|
|
6
|
+
|
|
7
|
+
return last ? last.index + last[0].length : 0;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default findInsertIndex;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import readFile from "../common/readFile.js";
|
|
2
|
+
import buildImport from "./buildImport.js";
|
|
3
|
+
import checkDuplicate from "./checkDuplicate.js";
|
|
4
|
+
import findInsertIndex from "./findInsertIndex.js";
|
|
5
|
+
import writeFile from "../common/writeFile.js";
|
|
6
|
+
|
|
7
|
+
const updateImports = ({ appJsPath, endpoint, showLog, inFuncName }) => {
|
|
8
|
+
const summary = {
|
|
9
|
+
import: { added: false, line: null },
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const content = readFile(appJsPath);
|
|
13
|
+
|
|
14
|
+
const importLine = buildImport({
|
|
15
|
+
inEndpoint: endpoint,
|
|
16
|
+
inFuncName
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const fromCheckDuplicate = checkDuplicate({ inContent: content, inFuncName });
|
|
20
|
+
|
|
21
|
+
if (fromCheckDuplicate) {
|
|
22
|
+
summary.import.skipped = true;
|
|
23
|
+
|
|
24
|
+
if (showLog) console.log(summary);
|
|
25
|
+
|
|
26
|
+
return summary;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const index = findInsertIndex(content);
|
|
30
|
+
|
|
31
|
+
const before = content.slice(0, index);
|
|
32
|
+
const lineNumber = before.split("\n").length + 1;
|
|
33
|
+
|
|
34
|
+
const updated =
|
|
35
|
+
before + "\n" + importLine + content.slice(index);
|
|
36
|
+
|
|
37
|
+
writeFile(appJsPath, updated);
|
|
38
|
+
|
|
39
|
+
summary.import.added = true;
|
|
40
|
+
summary.import.line = lineNumber;
|
|
41
|
+
|
|
42
|
+
if (showLog) console.log(summary);
|
|
43
|
+
|
|
44
|
+
return summary;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default updateImports;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const checkDuplicate = ({ inContent, inEndpoint, inAppOrRouter }) => {
|
|
2
|
+
const localContent = inContent;
|
|
3
|
+
const localEndpoint = inEndpoint;
|
|
4
|
+
const stringToSearch = `${inAppOrRouter}.get('/${localEndpoint}'`;
|
|
5
|
+
|
|
6
|
+
return localContent.includes(stringToSearch);
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default checkDuplicate;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const findUseInsertIndex = (inContent) => {
|
|
2
|
+
const localContent = inContent;
|
|
3
|
+
|
|
4
|
+
const matches = [...localContent.matchAll(/const\s+router\s*=\s*express\.Router\(\)/g)];
|
|
5
|
+
const match = matches.at(0);
|
|
6
|
+
|
|
7
|
+
return match ? match.index + match[0].length : localContent.length;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default findUseInsertIndex;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import readFile from "../common/readFile.js";
|
|
2
|
+
import writeFile from "../common/writeFile.js";
|
|
3
|
+
|
|
4
|
+
import buildUseLine from "./buildUseLine.js";
|
|
5
|
+
import checkDuplicate from "./checkDuplicate.js";
|
|
6
|
+
import findUseInsertIndex from "./findInsertIndex.js";
|
|
7
|
+
|
|
8
|
+
const appOrRouter = "router";
|
|
9
|
+
|
|
10
|
+
const updateAppUse = ({ appJsPath, endpoint, showLog, inFuncName }) => {
|
|
11
|
+
const summary = {
|
|
12
|
+
use: { added: false, skipped: false, line: null }
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const content = readFile(appJsPath);
|
|
16
|
+
|
|
17
|
+
const useLine = buildUseLine({
|
|
18
|
+
inAppOrRouter: appOrRouter,
|
|
19
|
+
inEndpoint: endpoint,
|
|
20
|
+
inFuncName
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const fromCheckDuplicate = checkDuplicate({
|
|
24
|
+
inContent: content,
|
|
25
|
+
inEndpoint: endpoint,
|
|
26
|
+
inAppOrRouter: appOrRouter
|
|
27
|
+
});
|
|
28
|
+
console.log("fromCheckDuplicate : ", fromCheckDuplicate);
|
|
29
|
+
|
|
30
|
+
if (fromCheckDuplicate) {
|
|
31
|
+
summary.use.skipped = true;
|
|
32
|
+
|
|
33
|
+
if (showLog) console.log(summary);
|
|
34
|
+
|
|
35
|
+
return summary;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const index = findUseInsertIndex(content);
|
|
39
|
+
|
|
40
|
+
const before = content.slice(0, index);
|
|
41
|
+
const lineNumber = before.split("\n").length + 1;
|
|
42
|
+
|
|
43
|
+
const updated =
|
|
44
|
+
before + "\n" + useLine + content.slice(index);
|
|
45
|
+
|
|
46
|
+
writeFile(appJsPath, updated);
|
|
47
|
+
|
|
48
|
+
summary.use.added = true;
|
|
49
|
+
summary.use.line = lineNumber;
|
|
50
|
+
|
|
51
|
+
if (showLog) console.log(summary);
|
|
52
|
+
|
|
53
|
+
return summary;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export default updateAppUse;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const announce = ({ inResolvedFolderName }) => {
|
|
2
|
+
console.log(`[keshavsoft] Folder created: ${inResolvedFolderName}`);
|
|
3
|
+
|
|
4
|
+
console.log("");
|
|
5
|
+
console.log("Next:");
|
|
6
|
+
console.log("");
|
|
7
|
+
console.log(`cd ${inResolvedFolderName}`);
|
|
8
|
+
console.log(`npx kschema-api-gen AddSubRoute`);
|
|
9
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
|
|
8
|
+
export const locateSource = () => {
|
|
9
|
+
const templatePath = path.join(__dirname, "..", "template");
|
|
10
|
+
|
|
11
|
+
const versions = fs.readdirSync(templatePath);
|
|
12
|
+
|
|
13
|
+
const maxVersion = Math.max(
|
|
14
|
+
...versions.map(v => Number(v.replace("v", "")))
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
return path.join(templatePath, `v${maxVersion}`);
|
|
18
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import updateImports from "./UpdateRoutesJs/updateImports/index.js";
|
|
2
|
+
import updateAppUse from "./UpdateRoutesJs/updateUse/index.js";
|
|
3
|
+
|
|
4
|
+
export default ({ appJsPath, endpoint }) => {
|
|
5
|
+
updateImports({ appJsPath, endpoint });
|
|
6
|
+
updateAppUse({ appJsPath, endpoint });
|
|
7
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
|
|
3
|
+
function updateEndPointsFile({ filePath, inTableName }) {
|
|
4
|
+
try {
|
|
5
|
+
let content = readFile(filePath);
|
|
6
|
+
|
|
7
|
+
content = content.replace("<TABLE_NAME>", inTableName);
|
|
8
|
+
|
|
9
|
+
writeFile(filePath, content);
|
|
10
|
+
} catch (e) {
|
|
11
|
+
handleError(e);
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// read
|
|
16
|
+
function readFile(filePath) {
|
|
17
|
+
return fs.readFileSync(filePath, "utf-8");
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// write
|
|
21
|
+
function writeFile(filePath, content) {
|
|
22
|
+
fs.writeFileSync(filePath, content);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// error handler
|
|
26
|
+
function handleError(e) {
|
|
27
|
+
console.error("ROUTE USE ERROR:", e.message);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { updateEndPointsFile };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { getConfig } from "../../core/configStore.js";
|
|
4
|
+
|
|
5
|
+
export const getSchema = (table) => {
|
|
6
|
+
const config = getConfig();
|
|
7
|
+
|
|
8
|
+
const schemaPath = path.join(config.SchemaPath, `${table}.json`);
|
|
9
|
+
|
|
10
|
+
if (!fs.existsSync(schemaPath)) {
|
|
11
|
+
throw new Error(`Schema not found for table "${table}" at ${schemaPath}`);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
const schema = fs.readFileSync(schemaPath, "utf-8");
|
|
16
|
+
return JSON.parse(schema);
|
|
17
|
+
} catch (err) {
|
|
18
|
+
throw new Error(`Invalid schema JSON for "${table}": ${err.message}`);
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { startFunc as Service } from "./service.js";
|
|
2
|
+
import { ConflictError, StorageError } from "./errors.js";
|
|
3
|
+
|
|
4
|
+
const postFunc = async ({ req, res, inTablePath, inConfigPath }) => {
|
|
5
|
+
try {
|
|
6
|
+
const inRequestBody = req.body;
|
|
7
|
+
|
|
8
|
+
const fromService = await Service({
|
|
9
|
+
inRequestBody, inTablePath,
|
|
10
|
+
inConfigPath
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
res.type("application/json").send(fromService);
|
|
14
|
+
} catch (err) {
|
|
15
|
+
|
|
16
|
+
if (err instanceof ConflictError)
|
|
17
|
+
return res.status(409).send(err.message);
|
|
18
|
+
|
|
19
|
+
if (err instanceof StorageError)
|
|
20
|
+
return res.status(500).send("Failed to persist data");
|
|
21
|
+
|
|
22
|
+
console.error(err);
|
|
23
|
+
res.status(500).send("Unexpected error");
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default postFunc;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class AppError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = this.constructor.name;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
class ConflictError extends AppError { }
|
|
9
|
+
class StorageError extends AppError { }
|
|
10
|
+
|
|
11
|
+
export { AppError, ConflictError, StorageError };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const insertAsIs = (mutate, tableName) => (record) =>
|
|
2
|
+
mutate.insertAsIs({ table: tableName, record });
|
|
3
|
+
|
|
4
|
+
const insertFlat = (mutate, tableName) => (record) =>
|
|
5
|
+
mutate.insertFlat({ table: tableName, record });
|
|
6
|
+
|
|
7
|
+
const insertGenPk = (mutate, tableName) => (record) =>
|
|
8
|
+
mutate.insertGenPk({ table: tableName, record });
|
|
9
|
+
|
|
10
|
+
const insertWithChecks = (mutate, tableName) => (record) =>
|
|
11
|
+
mutate.insertWithChecks({ table: tableName, record });
|
|
12
|
+
|
|
13
|
+
const deleteWithChecks = (mutate, tableName) => (pk) =>
|
|
14
|
+
mutate.deleteWithChecks({ table: tableName, pk });
|
|
15
|
+
|
|
16
|
+
const deleteWhere = (mutate, tableName) => (where) =>
|
|
17
|
+
mutate.deleteWhere({ table: tableName, where });
|
|
18
|
+
|
|
19
|
+
const updateWithChecks = (mutate, tableName) => (pk, record) =>
|
|
20
|
+
mutate.updateWithChecks({ table: tableName, pk, record });
|
|
21
|
+
|
|
22
|
+
const buildMutate = (mutate, tableName) => ({
|
|
23
|
+
insertAsIs: insertAsIs(mutate, tableName),
|
|
24
|
+
insertFlat: insertFlat(mutate, tableName),
|
|
25
|
+
insertGenPk: insertGenPk(mutate, tableName),
|
|
26
|
+
insertWithChecks: insertWithChecks(mutate, tableName),
|
|
27
|
+
deleteWithChecks: deleteWithChecks(mutate, tableName),
|
|
28
|
+
deleteWhere: deleteWhere(mutate, tableName),
|
|
29
|
+
updateWithChecks: updateWithChecks(mutate, tableName)
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default buildMutate;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as aggregate from "../engine/query/aggregate/index.js";
|
|
2
|
+
|
|
3
|
+
const findAll = (query, tableName) => () =>
|
|
4
|
+
query.findAll({ table: tableName });
|
|
5
|
+
|
|
6
|
+
const findByPk = (query, tableName) => (id) =>
|
|
7
|
+
query.findByPk({ table: tableName, id });
|
|
8
|
+
|
|
9
|
+
const filterByPk = (query, tableName) => (id) =>
|
|
10
|
+
query.filterByPk({ table: tableName, id });
|
|
11
|
+
|
|
12
|
+
const filterByColumns = (query, tableName) => (where) =>
|
|
13
|
+
query.filterByColumns({ table: tableName, where });
|
|
14
|
+
|
|
15
|
+
const buildQuery = (query, tableName) => ({
|
|
16
|
+
findAll: findAll(query, tableName),
|
|
17
|
+
findByPk: findByPk(query, tableName),
|
|
18
|
+
filterByPk: filterByPk(query, tableName),
|
|
19
|
+
filterByColumns: filterByColumns(query, tableName),
|
|
20
|
+
|
|
21
|
+
aggregate: {
|
|
22
|
+
count: () =>
|
|
23
|
+
query.aggregate.count({ table: tableName }),
|
|
24
|
+
distinct: (column) =>
|
|
25
|
+
query.aggregate.distinct({
|
|
26
|
+
table: tableName,
|
|
27
|
+
column
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default buildQuery;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const getPrimaryKey = (columns) => {
|
|
2
|
+
const pkColumn = columns.find(c => c.primary);
|
|
3
|
+
if (!pkColumn) throw new Error("Primary key not defined");
|
|
4
|
+
return pkColumn.field;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export const attachPrimaryKey = (record, pk, data) => {
|
|
8
|
+
let maxId = 0;
|
|
9
|
+
|
|
10
|
+
for (const row of data) {
|
|
11
|
+
const val = Number(row[pk]) || 0;
|
|
12
|
+
if (val > maxId) maxId = val;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
...record,
|
|
17
|
+
[pk]: maxId + 1
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import required from "./validators/required.js";
|
|
2
|
+
import type from "./validators/type.js";
|
|
3
|
+
import minMax from "./validators/minMax.js";
|
|
4
|
+
import length from "./validators/length.js";
|
|
5
|
+
import enumCheck from "./validators/enum.js";
|
|
6
|
+
import pattern from "./validators/pattern.js";
|
|
7
|
+
import setDefault from "./validators/default.js";
|
|
8
|
+
|
|
9
|
+
const validators = [required, type, minMax, length, enumCheck, pattern];
|
|
10
|
+
|
|
11
|
+
const validate = (schema, record) => {
|
|
12
|
+
if (!schema?.columns) throw new Error("Invalid schema");
|
|
13
|
+
|
|
14
|
+
for (const col of schema.columns) {
|
|
15
|
+
if (!col.isConsider) continue;
|
|
16
|
+
|
|
17
|
+
setDefault(col, record); // 🔥 mutate first
|
|
18
|
+
|
|
19
|
+
const value = record[col.field];
|
|
20
|
+
|
|
21
|
+
for (const fn of validators) {
|
|
22
|
+
fn(col, value, record);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default validate;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const validateRecord = (record, columns, data) => {
|
|
2
|
+
columns.forEach(col => {
|
|
3
|
+
const value = record[col.field];
|
|
4
|
+
|
|
5
|
+
if (col.required && (value === undefined || value === null || value === "")) {
|
|
6
|
+
throw new Error(`${col.field} is required`);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (value === undefined) return;
|
|
10
|
+
|
|
11
|
+
if (col.unique && data.some(r => r[col.field] === value)) {
|
|
12
|
+
throw new Error(`${col.field} must be unique`);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const validateFilterKeys = (filter, columns) => {
|
|
18
|
+
const validColumns = columns.map(col => col.field);
|
|
19
|
+
|
|
20
|
+
const invalidKeys = Object.keys(filter).filter(
|
|
21
|
+
key => !validColumns.includes(key)
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
if (invalidKeys.length > 0) {
|
|
25
|
+
throw new Error(`Invalid columns: ${invalidKeys.join(", ")}`);
|
|
26
|
+
};
|
|
27
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export default (col, value) => {
|
|
2
|
+
if (value == null || typeof value !== "string") return;
|
|
3
|
+
|
|
4
|
+
if (col.minLength != null && value.length < col.minLength) {
|
|
5
|
+
throw new Error(`${col.field} min length ${col.minLength}`);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (col.maxLength != null && value.length > col.maxLength) {
|
|
9
|
+
throw new Error(`${col.field} max length ${col.maxLength}`);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export default (col, value) => {
|
|
2
|
+
if (value == null) return;
|
|
3
|
+
|
|
4
|
+
if (col.min != null && value < col.min) {
|
|
5
|
+
throw new Error(`${col.field} must be >= ${col.min}`);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (col.max != null && value > col.max) {
|
|
9
|
+
throw new Error(`${col.field} must be <= ${col.max}`);
|
|
10
|
+
}
|
|
11
|
+
};
|