@solidstarters/solid-core 1.2.206 → 1.2.207

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.
Files changed (69) hide show
  1. package/dist/commands/seed.command.js +1 -1
  2. package/dist/commands/seed.command.js.map +1 -1
  3. package/dist/controllers/test.controller.d.ts.map +1 -1
  4. package/dist/controllers/test.controller.js.map +1 -1
  5. package/dist/dtos/create-scheduled-job.dto.d.ts +1 -0
  6. package/dist/dtos/create-scheduled-job.dto.d.ts.map +1 -1
  7. package/dist/dtos/create-scheduled-job.dto.js +7 -1
  8. package/dist/dtos/create-scheduled-job.dto.js.map +1 -1
  9. package/dist/dtos/update-scheduled-job.dto.d.ts +1 -0
  10. package/dist/dtos/update-scheduled-job.dto.d.ts.map +1 -1
  11. package/dist/dtos/update-scheduled-job.dto.js +7 -1
  12. package/dist/dtos/update-scheduled-job.dto.js.map +1 -1
  13. package/dist/entities/scheduled-job.entity.d.ts +1 -0
  14. package/dist/entities/scheduled-job.entity.d.ts.map +1 -1
  15. package/dist/entities/scheduled-job.entity.js +5 -1
  16. package/dist/entities/scheduled-job.entity.js.map +1 -1
  17. package/dist/helpers/command.service.d.ts +5 -1
  18. package/dist/helpers/command.service.d.ts.map +1 -1
  19. package/dist/helpers/command.service.js +26 -11
  20. package/dist/helpers/command.service.js.map +1 -1
  21. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +2 -2
  22. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
  23. package/dist/helpers/schematic.service.d.ts +3 -2
  24. package/dist/helpers/schematic.service.d.ts.map +1 -1
  25. package/dist/helpers/schematic.service.js +32 -27
  26. package/dist/helpers/schematic.service.js.map +1 -1
  27. package/dist/repository/scheduled-job.repository.d.ts.map +1 -1
  28. package/dist/repository/scheduled-job.repository.js +1 -0
  29. package/dist/repository/scheduled-job.repository.js.map +1 -1
  30. package/dist/seeders/module-metadata-seeder.service.js +1 -1
  31. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  32. package/dist/seeders/seed-data/solid-core-metadata.json +21 -1
  33. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  34. package/dist/seeders/system-fields-seeder.service.js +3 -0
  35. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  36. package/dist/services/authentication.service.js +0 -3
  37. package/dist/services/authentication.service.js.map +1 -1
  38. package/dist/services/file.service.d.ts.map +1 -1
  39. package/dist/services/file.service.js +1 -1
  40. package/dist/services/file.service.js.map +1 -1
  41. package/dist/services/scheduled-jobs/scheduler.service.d.ts +1 -0
  42. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  43. package/dist/services/scheduled-jobs/scheduler.service.js +29 -0
  44. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  45. package/dist/tsconfig.tsbuildinfo +1 -1
  46. package/docs/type-declaration-import-issue.md +24 -0
  47. package/package.json +2 -1
  48. package/src/commands/seed.command.ts +1 -1
  49. package/src/controllers/test.controller.ts +0 -18
  50. package/src/dtos/create-scheduled-job.dto.ts +4 -0
  51. package/src/dtos/update-scheduled-job.dto.ts +4 -0
  52. package/src/entities/scheduled-job.entity.ts +2 -0
  53. package/src/helpers/command.service.ts +44 -12
  54. package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +2 -2
  55. package/src/helpers/schematic.service.ts +41 -35
  56. package/src/repository/scheduled-job.repository.ts +1 -0
  57. package/src/seeders/module-metadata-seeder.service.ts +1 -1
  58. package/src/seeders/seed-data/solid-core-metadata.json +21 -1
  59. package/src/seeders/system-fields-seeder.service.ts +3 -0
  60. package/src/services/authentication.service.ts +3 -3
  61. package/src/services/file.service.ts +4 -5
  62. package/src/services/scheduled-jobs/scheduler.service.ts +40 -3
  63. package/# Password field.md +0 -8
  64. package/dist/services/file/file-service.interface.d.ts +0 -22
  65. package/dist/services/file/file-service.interface.d.ts.map +0 -1
  66. package/dist/services/file/file-service.interface.js +0 -5
  67. package/dist/services/file/file-service.interface.js.map +0 -1
  68. package/sql-server-changes.txt +0 -88
  69. package/src/services/file/file-service.interface.ts +0 -74
@@ -44,7 +44,7 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
44
44
  this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);
45
45
  return;
46
46
  }
47
- this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);
47
+ this.logger.log(`Running the seed() method for seeder: ${seeder.constructor.name}`);
48
48
  await seeder.seed(parsedConf);
49
49
  }
50
50
  parseConf(val) {
@@ -1 +1 @@
1
- {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,8DAA2D;AAQpD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,8BAAa;IAG5C,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAIvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA4B;QAG3D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAG3B,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;aAC9B,UAAU,EAAE;aACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;aAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;aAChC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,qDAAqD,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAOD,SAAS,CAAC,GAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,WAAW,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AAnDY,kCAAW;AA2CtB;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,WAAW,EAAE,iDAAiD,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;;;4CAGrI;AAGD;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,6BAA6B,EAAE,CAAC;;;;8CAG/I;sBAlDU,WAAW;IADvB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;qCAIjC,8BAAa;GAH9C,WAAW,CAmDvB","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\n\ninterface SeedCommandOptions {\n conf?: string;\n seeder?: string;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n // check if options.conf is non empty and a valid json string only is -c flag is passed.\n // convert to json object JSON.parse\n let parsedConf: any = null;\n\n // Parse conf only if provided\n if (options?.conf !== undefined) {\n try {\n parsedConf = JSON.parse(options.conf);\n this.logger.log(`Parsed conf: ${JSON.stringify(parsedConf, null, 2)}`);\n } catch (err) {\n this.logger.error('Failed to parse --conf. Please provide valid JSON.');\n return;\n }\n } else {\n this.logger.log('No --conf flag provided. Running with default seeder behavior.');\n }\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n /**\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n @Option({ flags: '-c, --conf [configuration json]', description: 'A configuration json, pass a valid json string.', required: false })\n parseConf(val: string): string {\n return val;\n }\n\n @Option({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' })\n parseString(val: string): string {\n return val;\n }\n}\n"]}
1
+ {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,8DAA2D;AAQpD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,8BAAa;IAG5C,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAIvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA4B;QAG3D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAG3B,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;aAC9B,UAAU,EAAE;aACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;aAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;aAChC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,qDAAqD,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAOD,SAAS,CAAC,GAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,WAAW,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AAnDY,kCAAW;AA2CtB;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,WAAW,EAAE,iDAAiD,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;;;4CAGrI;AAGD;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,6BAA6B,EAAE,CAAC;;;;8CAG/I;sBAlDU,WAAW;IADvB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;qCAIjC,8BAAa;GAH9C,WAAW,CAmDvB","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\n\ninterface SeedCommandOptions {\n conf?: string;\n seeder?: string;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n // check if options.conf is non empty and a valid json string only is -c flag is passed.\n // convert to json object JSON.parse\n let parsedConf: any = null;\n\n // Parse conf only if provided\n if (options?.conf !== undefined) {\n try {\n parsedConf = JSON.parse(options.conf);\n this.logger.log(`Parsed conf: ${JSON.stringify(parsedConf, null, 2)}`);\n } catch (err) {\n this.logger.error('Failed to parse --conf. Please provide valid JSON.');\n return;\n }\n } else {\n this.logger.log('No --conf flag provided. Running with default seeder behavior.');\n }\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder: ${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n /**\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n @Option({ flags: '-c, --conf [configuration json]', description: 'A configuration json, pass a valid json string.', required: false })\n parseConf(val: string): string {\n return val;\n }\n\n @Option({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' })\n parseString(val: string): string {\n return val;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"test.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,qBAAa,QAAQ;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAEa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAHxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAEvC,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,qBAAqB;IAM/D,UAAU,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,IAAI,EAAE,GAAG;;;;;IAOhF,UAAU,CAAiB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAU,IAAI,EAAE,GAAG;;;IAWjE,SAAS,CAAiB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAU,IAAI,EAAE,GAAG;;;CAsB7E"}
1
+ {"version":3,"file":"test.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,qBAAa,QAAQ;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAEa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAHxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAEvC,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,qBAAqB;IAM/D,UAAU,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,IAAI,EAAE,GAAG;;;;;IAOhF,UAAU,CAAiB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAU,IAAI,EAAE,GAAG;;;IAWjE,SAAS,CAAiB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAU,IAAI,EAAE,GAAG;;;CAI7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.controller.js","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA8G;AAC9G,+DAAgF;AAChF,6CAAyD;AACzD,8DAA2D;AAC3D,iEAAqD;AACrD,4DAAoD;AACpD,uFAAmF;AAEnF,MAAa,QAAQ;CAEpB;AAFD,4BAEC;AAIM,IAAM,cAAc,sBAApB,MAAM,cAAc;IAEzB,YACmB,aAA4B,EAC5B,qBAA4C;QAD5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,0BAAqB,GAArB,qBAAqB,CAAuB;QAH9C,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAItD,CAAC;IAKL,UAAU,CAAkB,KAAiC,EAAU,IAAS;QAC9E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjG,CAAC;IAKD,UAAU,CAAiB,IAAyB,EAAU,IAAS;QAErE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAKK,AAAN,KAAK,CAAC,SAAS,CAAiB,IAAyB,EAAU,IAAS;QAC1E,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CAmBF,CAAA;AAlDY,wCAAc;AAUzB;IAHC,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;IACtC,IAAA,aAAI,EAAC,SAAS,CAAC;;IACJ,WAAA,IAAA,sBAAa,GAAE,CAAA;IAAqC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAnC,KAAK;;gDAEvC;AAKD;IAHC,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;;IAC7B,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAM5D;AAKK;IAHL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,EAAC,YAAY,CAAC;IAClB,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;;IACxB,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;+CAGjE;yBA/BU,cAAc;IAF1B,IAAA,mBAAU,EAAC,MAAM,CAAC;IAClB,IAAA,iBAAO,EAAC,YAAY,CAAC;qCAIc,8BAAa;QACL,+CAAqB;GAJpD,cAAc,CAkD1B","sourcesContent":["import { Body, Controller, Logger, Post, UploadedFile, UploadedFiles, UseInterceptors } from \"@nestjs/common\";\nimport { AnyFilesInterceptor, FileInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiTags } from \"@nestjs/swagger\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { Auth } from \"src/decorators/auth.decorator\";\nimport { AuthType } from \"src/enums/auth-type.enum\";\nimport { IngestMetadataService } from \"src/services/genai/ingest-metadata.service\";\n\nexport class SeedData {\n seeder: string;\n}\n\n@Controller('test')\n@ApiTags(\"Solid Core\")\nexport class TestController {\n private readonly logger = new Logger(TestController.name);\n constructor(\n private readonly solidRegistry: SolidRegistry,\n private readonly ingestMetadataService: IngestMetadataService,\n ) { }\n\n @Auth(AuthType.None)\n @UseInterceptors(AnyFilesInterceptor())\n @Post('uploads')\n uploadData(@UploadedFiles() files: Array<Express.Multer.File>, @Body() body: any) {\n return { message: 'file uploaded', fileNames: files.map(f => f.originalname), formData: body };\n }\n\n @Auth(AuthType.None)\n @Post('upload')\n @UseInterceptors(FileInterceptor('file')) // 'file' here is the name of the field in the form\n uploadFile(@UploadedFile() file: Express.Multer.File, @Body() body: any) {\n // console.log(file);\n this.logger.debug(file);\n // console.log(body);\n this.logger.debug(body);\n return { filename: file.originalname };\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('mcp/ingest')\n @UseInterceptors(FileInterceptor('file'))\n async mcpIngest(@UploadedFile() file: Express.Multer.File, @Body() body: any) {\n await this.ingestMetadataService.ingest();\n return { ok: true };\n }\n\n // @Public()\n // @Post('seed')\n // async seedData(@Body() seedData: any) {\n // const seeder = this.solidRegistry\n // .getSeeders()\n // .filter((seeder) => seeder.name === seedData.seeder)\n // .map((seeder) => seeder.instance)\n // .pop();\n // if (!seeder) {\n // this.logger.error(`Seeder service ${seedData.seeder} not found. Does your service have a seed() method?`);\n // return;\n // }\n // this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n // await seeder.seed();\n // return { message: `seed data for ${seedData.seeder}` };\n // }\n\n}\n"]}
1
+ {"version":3,"file":"test.controller.js","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA8G;AAC9G,+DAAgF;AAChF,6CAAyD;AACzD,8DAA2D;AAC3D,iEAAqD;AACrD,4DAAoD;AACpD,uFAAmF;AAEnF,MAAa,QAAQ;CAEpB;AAFD,4BAEC;AAIM,IAAM,cAAc,sBAApB,MAAM,cAAc;IAEzB,YACmB,aAA4B,EAC5B,qBAA4C;QAD5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,0BAAqB,GAArB,qBAAqB,CAAuB;QAH9C,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAItD,CAAC;IAKL,UAAU,CAAkB,KAAiC,EAAU,IAAS;QAC9E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjG,CAAC;IAKD,UAAU,CAAiB,IAAyB,EAAU,IAAS;QAErE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAKK,AAAN,KAAK,CAAC,SAAS,CAAiB,IAAyB,EAAU,IAAS;QAC1E,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAhCY,wCAAc;AAUzB;IAHC,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;IACtC,IAAA,aAAI,EAAC,SAAS,CAAC;;IACJ,WAAA,IAAA,sBAAa,GAAE,CAAA;IAAqC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAnC,KAAK;;gDAEvC;AAKD;IAHC,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;;IAC7B,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAM5D;AAKK;IAHL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,EAAC,YAAY,CAAC;IAClB,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;;IACxB,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;+CAGjE;yBA/BU,cAAc;IAF1B,IAAA,mBAAU,EAAC,MAAM,CAAC;IAClB,IAAA,iBAAO,EAAC,YAAY,CAAC;qCAIc,8BAAa;QACL,+CAAqB;GAJpD,cAAc,CAgC1B","sourcesContent":["import { Body, Controller, Logger, Post, UploadedFile, UploadedFiles, UseInterceptors } from \"@nestjs/common\";\nimport { AnyFilesInterceptor, FileInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiTags } from \"@nestjs/swagger\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { Auth } from \"src/decorators/auth.decorator\";\nimport { AuthType } from \"src/enums/auth-type.enum\";\nimport { IngestMetadataService } from \"src/services/genai/ingest-metadata.service\";\n\nexport class SeedData {\n seeder: string;\n}\n\n@Controller('test')\n@ApiTags(\"Solid Core\")\nexport class TestController {\n private readonly logger = new Logger(TestController.name);\n constructor(\n private readonly solidRegistry: SolidRegistry,\n private readonly ingestMetadataService: IngestMetadataService,\n ) { }\n\n @Auth(AuthType.None)\n @UseInterceptors(AnyFilesInterceptor())\n @Post('uploads')\n uploadData(@UploadedFiles() files: Array<Express.Multer.File>, @Body() body: any) {\n return { message: 'file uploaded', fileNames: files.map(f => f.originalname), formData: body };\n }\n\n @Auth(AuthType.None)\n @Post('upload')\n @UseInterceptors(FileInterceptor('file')) // 'file' here is the name of the field in the form\n uploadFile(@UploadedFile() file: Express.Multer.File, @Body() body: any) {\n // console.log(file);\n this.logger.debug(file);\n // console.log(body);\n this.logger.debug(body);\n return { filename: file.originalname };\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('mcp/ingest')\n @UseInterceptors(FileInterceptor('file'))\n async mcpIngest(@UploadedFile() file: Express.Multer.File, @Body() body: any) {\n await this.ingestMetadataService.ingest();\n return { ok: true };\n }\n}\n"]}
@@ -11,6 +11,7 @@ export declare class CreateScheduledJobDto {
11
11
  nextRunAt: Date;
12
12
  dayOfWeek: string;
13
13
  job: string;
14
+ cronExpression: string;
14
15
  moduleId: number;
15
16
  moduleUserKey: string;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-scheduled-job.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-scheduled-job.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,qBAAqB;IAI9B,YAAY,EAAE,MAAM,CAAC;IAIrB,QAAQ,EAAE,OAAO,CAAS;IAI1B,SAAS,EAAE,MAAM,CAAC;IAIlB,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,UAAU,EAAE,MAAM,CAAC;IAInB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,MAAM,CAAC;IAIlB,GAAG,EAAE,MAAM,CAAC;IAIZ,QAAQ,EAAE,MAAM,CAAC;IAIjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"create-scheduled-job.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-scheduled-job.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,qBAAqB;IAI9B,YAAY,EAAE,MAAM,CAAC;IAIrB,QAAQ,EAAE,OAAO,CAAS;IAI1B,SAAS,EAAE,MAAM,CAAC;IAIlB,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,UAAU,EAAE,MAAM,CAAC;IAInB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,MAAM,CAAC;IAIlB,GAAG,EAAE,MAAM,CAAC;IAIZ,cAAc,EAAE,MAAM,CAAC;IAIvB,QAAQ,EAAE,MAAM,CAAC;IAIjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
@@ -19,7 +19,7 @@ class CreateScheduledJobDto {
19
19
  this.isActive = false;
20
20
  }
21
21
  static _OPENAPI_METADATA_FACTORY() {
22
- return { scheduleName: { required: true, type: () => String }, isActive: { required: true, type: () => Boolean, default: false }, frequency: { required: true, type: () => String }, startTime: { required: true, type: () => Date }, endTime: { required: true, type: () => Date }, startDate: { required: true, type: () => Date }, endDate: { required: true, type: () => Date }, dayOfMonth: { required: true, type: () => Number }, lastRunAt: { required: true, type: () => Date }, nextRunAt: { required: true, type: () => Date }, dayOfWeek: { required: true, type: () => String }, job: { required: true, type: () => String }, moduleId: { required: true, type: () => Number }, moduleUserKey: { required: true, type: () => String } };
22
+ return { scheduleName: { required: true, type: () => String }, isActive: { required: true, type: () => Boolean, default: false }, frequency: { required: true, type: () => String }, startTime: { required: true, type: () => Date }, endTime: { required: true, type: () => Date }, startDate: { required: true, type: () => Date }, endDate: { required: true, type: () => Date }, dayOfMonth: { required: true, type: () => Number }, lastRunAt: { required: true, type: () => Date }, nextRunAt: { required: true, type: () => Date }, dayOfWeek: { required: true, type: () => String }, job: { required: true, type: () => String }, cronExpression: { required: true, type: () => String }, moduleId: { required: true, type: () => Number }, moduleUserKey: { required: true, type: () => String } };
23
23
  }
24
24
  }
25
25
  exports.CreateScheduledJobDto = CreateScheduledJobDto;
@@ -95,6 +95,12 @@ __decorate([
95
95
  (0, swagger_1.ApiProperty)(),
96
96
  __metadata("design:type", String)
97
97
  ], CreateScheduledJobDto.prototype, "job", void 0);
98
+ __decorate([
99
+ (0, class_validator_2.IsOptional)(),
100
+ (0, class_validator_1.IsString)(),
101
+ (0, swagger_1.ApiProperty)(),
102
+ __metadata("design:type", String)
103
+ ], CreateScheduledJobDto.prototype, "cronExpression", void 0);
98
104
  __decorate([
99
105
  (0, class_validator_2.IsOptional)(),
100
106
  (0, class_validator_2.IsInt)(),
@@ -1 +1 @@
1
- {"version":3,"file":"create-scheduled-job.dto.js","sourceRoot":"","sources":["../../src/dtos/create-scheduled-job.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAC3C,qDAAmF;AAEnF,MAAa,qBAAqB;IAAlC;QAQI,aAAQ,GAAY,KAAK,CAAC;KAiD7B;;iIAjDuB,KAAK;;CAiD5B;AAzDD,sDAyDC;AArDG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;2DACO;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;uDACY;AAI1B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAIlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;yDACK;AAInB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAIlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;kDACF;AAIZ;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;4DACQ","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\nimport { IsNotEmpty, IsBoolean, IsDate, IsOptional, IsInt } from 'class-validator';\n\nexport class CreateScheduledJobDto {\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n scheduleName: string;\n @IsNotEmpty()\n @IsBoolean()\n @ApiProperty()\n isActive: boolean = false;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n frequency: string;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startDate: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endDate: Date;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n dayOfMonth: number;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n lastRunAt: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n nextRunAt: Date;\n @IsOptional()\n @IsString()\n @ApiProperty()\n dayOfWeek: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n job: string;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n @ApiProperty()\n moduleUserKey: string;\n}"]}
1
+ {"version":3,"file":"create-scheduled-job.dto.js","sourceRoot":"","sources":["../../src/dtos/create-scheduled-job.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAC3C,qDAAmF;AAEnF,MAAa,qBAAqB;IAAlC;QAQI,aAAQ,GAAY,KAAK,CAAC;KAqD7B;;iIArDuB,KAAK;;CAqD5B;AA7DD,sDA6DC;AAzDG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;2DACO;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;uDACY;AAI1B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAIlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;yDACK;AAInB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAIlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;kDACF;AAIZ;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;6DACS;AAIvB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;4DACQ","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\nimport { IsNotEmpty, IsBoolean, IsDate, IsOptional, IsInt } from 'class-validator';\n\nexport class CreateScheduledJobDto {\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n scheduleName: string;\n @IsNotEmpty()\n @IsBoolean()\n @ApiProperty()\n isActive: boolean = false;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n frequency: string;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startDate: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endDate: Date;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n dayOfMonth: number;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n lastRunAt: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n nextRunAt: Date;\n @IsOptional()\n @IsString()\n @ApiProperty()\n dayOfWeek: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n job: string;\n @IsOptional()\n @IsString()\n @ApiProperty()\n cronExpression: string;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n @ApiProperty()\n moduleUserKey: string;\n}"]}
@@ -12,6 +12,7 @@ export declare class UpdateScheduledJobDto {
12
12
  nextRunAt: Date;
13
13
  dayOfWeek: string;
14
14
  job: string;
15
+ cronExpression: string;
15
16
  moduleId: number;
16
17
  moduleUserKey: string;
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update-scheduled-job.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-scheduled-job.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,qBAAqB;IAG9B,EAAE,EAAE,MAAM,CAAC;IAKX,YAAY,EAAE,MAAM,CAAC;IAKrB,QAAQ,EAAE,OAAO,CAAC;IAKlB,SAAS,EAAE,MAAM,CAAC;IAIlB,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,UAAU,EAAE,MAAM,CAAC;IAInB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,MAAM,CAAC;IAKlB,GAAG,EAAE,MAAM,CAAC;IAIZ,QAAQ,EAAE,MAAM,CAAC;IAIjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"update-scheduled-job.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-scheduled-job.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,qBAAqB;IAG9B,EAAE,EAAE,MAAM,CAAC;IAKX,YAAY,EAAE,MAAM,CAAC;IAKrB,QAAQ,EAAE,OAAO,CAAC;IAKlB,SAAS,EAAE,MAAM,CAAC;IAIlB,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,SAAS,EAAE,IAAI,CAAC;IAIhB,OAAO,EAAE,IAAI,CAAC;IAId,UAAU,EAAE,MAAM,CAAC;IAInB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,IAAI,CAAC;IAIhB,SAAS,EAAE,MAAM,CAAC;IAKlB,GAAG,EAAE,MAAM,CAAC;IAIZ,cAAc,EAAE,MAAM,CAAC;IAIvB,QAAQ,EAAE,MAAM,CAAC;IAIjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
@@ -15,7 +15,7 @@ const class_validator_1 = require("class-validator");
15
15
  const swagger_1 = require("@nestjs/swagger");
16
16
  class UpdateScheduledJobDto {
17
17
  static _OPENAPI_METADATA_FACTORY() {
18
- return { id: { required: true, type: () => Number }, scheduleName: { required: true, type: () => String }, isActive: { required: true, type: () => Boolean }, frequency: { required: true, type: () => String }, startTime: { required: true, type: () => Date }, endTime: { required: true, type: () => Date }, startDate: { required: true, type: () => Date }, endDate: { required: true, type: () => Date }, dayOfMonth: { required: true, type: () => Number }, lastRunAt: { required: true, type: () => Date }, nextRunAt: { required: true, type: () => Date }, dayOfWeek: { required: true, type: () => String }, job: { required: true, type: () => String }, moduleId: { required: true, type: () => Number }, moduleUserKey: { required: true, type: () => String } };
18
+ return { id: { required: true, type: () => Number }, scheduleName: { required: true, type: () => String }, isActive: { required: true, type: () => Boolean }, frequency: { required: true, type: () => String }, startTime: { required: true, type: () => Date }, endTime: { required: true, type: () => Date }, startDate: { required: true, type: () => Date }, endDate: { required: true, type: () => Date }, dayOfMonth: { required: true, type: () => Number }, lastRunAt: { required: true, type: () => Date }, nextRunAt: { required: true, type: () => Date }, dayOfWeek: { required: true, type: () => String }, job: { required: true, type: () => String }, cronExpression: { required: true, type: () => String }, moduleId: { required: true, type: () => Number }, moduleUserKey: { required: true, type: () => String } };
19
19
  }
20
20
  }
21
21
  exports.UpdateScheduledJobDto = UpdateScheduledJobDto;
@@ -100,6 +100,12 @@ __decorate([
100
100
  (0, swagger_1.ApiProperty)(),
101
101
  __metadata("design:type", String)
102
102
  ], UpdateScheduledJobDto.prototype, "job", void 0);
103
+ __decorate([
104
+ (0, class_validator_1.IsOptional)(),
105
+ (0, class_validator_1.IsString)(),
106
+ (0, swagger_1.ApiProperty)(),
107
+ __metadata("design:type", String)
108
+ ], UpdateScheduledJobDto.prototype, "cronExpression", void 0);
103
109
  __decorate([
104
110
  (0, class_validator_1.IsOptional)(),
105
111
  (0, class_validator_1.IsInt)(),
@@ -1 +1 @@
1
- {"version":3,"file":"update-scheduled-job.dto.js","sourceRoot":"","sources":["../../src/dtos/update-scheduled-job.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAA6F;AAC7F,6CAA8C;AAE9C,MAAa,qBAAqB;;;;CAgEjC;AAhED,sDAgEC;AA7DG;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACG;AAKX;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;2DACO;AAKrB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;uDACI;AAKlB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAIlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;yDACK;AAInB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAKlB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;kDACF;AAIZ;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;4DACQ","sourcesContent":["import { IsInt, IsOptional, IsString, IsNotEmpty, IsBoolean, IsDate } from 'class-validator';\nimport { ApiProperty } from '@nestjs/swagger';\n\nexport class UpdateScheduledJobDto {\n @IsOptional()\n @IsInt()\n id: number;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n scheduleName: string;\n @IsNotEmpty()\n @IsOptional()\n @IsBoolean()\n @ApiProperty()\n isActive: boolean;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n frequency: string;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startDate: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endDate: Date;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n dayOfMonth: number;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n lastRunAt: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n nextRunAt: Date;\n @IsOptional()\n @IsString()\n @ApiProperty()\n dayOfWeek: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n job: string;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n @ApiProperty()\n moduleUserKey: string;\n}"]}
1
+ {"version":3,"file":"update-scheduled-job.dto.js","sourceRoot":"","sources":["../../src/dtos/update-scheduled-job.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAA6F;AAC7F,6CAA8C;AAE9C,MAAa,qBAAqB;;;;CAoEjC;AApED,sDAoEC;AAjEG;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACG;AAKX;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;2DACO;AAKrB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;uDACI;AAKlB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAIlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACL,IAAI;sDAAC;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;yDACK;AAInB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;8BACH,IAAI;wDAAC;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACI;AAKlB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;kDACF;AAIZ;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;6DACS;AAIvB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;4DACQ","sourcesContent":["import { IsInt, IsOptional, IsString, IsNotEmpty, IsBoolean, IsDate } from 'class-validator';\nimport { ApiProperty } from '@nestjs/swagger';\n\nexport class UpdateScheduledJobDto {\n @IsOptional()\n @IsInt()\n id: number;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n scheduleName: string;\n @IsNotEmpty()\n @IsOptional()\n @IsBoolean()\n @ApiProperty()\n isActive: boolean;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n frequency: string;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endTime: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n startDate: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n endDate: Date;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n dayOfMonth: number;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n lastRunAt: Date;\n @IsOptional()\n @IsDate()\n @ApiProperty()\n nextRunAt: Date;\n @IsOptional()\n @IsString()\n @ApiProperty()\n dayOfWeek: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n job: string;\n @IsOptional()\n @IsString()\n @ApiProperty()\n cronExpression: string;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n @ApiProperty()\n moduleUserKey: string;\n}"]}
@@ -13,6 +13,7 @@ export declare class ScheduledJob extends CommonEntity {
13
13
  nextRunAt: Date;
14
14
  dayOfWeek: string;
15
15
  job: string;
16
+ cronExpression: string;
16
17
  module: ModuleMetadata;
17
18
  }
18
19
  //# sourceMappingURL=scheduled-job.entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-job.entity.d.ts","sourceRoot":"","sources":["../../src/entities/scheduled-job.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,qBACa,YAAa,SAAQ,YAAY;IAG1C,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,OAAO,CAAS;IAE1B,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,IAAI,CAAC;IAEhB,OAAO,EAAE,IAAI,CAAC;IAEd,SAAS,EAAE,IAAI,CAAC;IAEhB,OAAO,EAAE,IAAI,CAAC;IAEd,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,IAAI,CAAC;IAEhB,SAAS,EAAE,IAAI,CAAC;IAEhB,SAAS,EAAE,MAAM,CAAC;IAElB,GAAG,EAAE,MAAM,CAAC;IAIZ,MAAM,EAAE,cAAc,CAAC;CAC1B"}
1
+ {"version":3,"file":"scheduled-job.entity.d.ts","sourceRoot":"","sources":["../../src/entities/scheduled-job.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,qBACa,YAAa,SAAQ,YAAY;IAG1C,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,OAAO,CAAS;IAE1B,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,IAAI,CAAC;IAEhB,OAAO,EAAE,IAAI,CAAC;IAEd,SAAS,EAAE,IAAI,CAAC;IAEhB,OAAO,EAAE,IAAI,CAAC;IAEd,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,IAAI,CAAC;IAEhB,SAAS,EAAE,IAAI,CAAC;IAEhB,SAAS,EAAE,MAAM,CAAC;IAElB,GAAG,EAAE,MAAM,CAAC;IAEZ,cAAc,EAAE,MAAM,CAAC;IAIvB,MAAM,EAAE,cAAc,CAAC;CAC1B"}
@@ -20,7 +20,7 @@ let ScheduledJob = class ScheduledJob extends common_entity_1.CommonEntity {
20
20
  this.isActive = false;
21
21
  }
22
22
  static _OPENAPI_METADATA_FACTORY() {
23
- return { scheduleName: { required: true, type: () => String }, isActive: { required: true, type: () => Boolean, default: false }, frequency: { required: true, type: () => String }, startTime: { required: true, type: () => Date }, endTime: { required: true, type: () => Date }, startDate: { required: true, type: () => Date }, endDate: { required: true, type: () => Date }, dayOfMonth: { required: true, type: () => Number }, lastRunAt: { required: true, type: () => Date }, nextRunAt: { required: true, type: () => Date }, dayOfWeek: { required: true, type: () => String }, job: { required: true, type: () => String }, module: { required: true, type: () => require("./module-metadata.entity").ModuleMetadata } };
23
+ return { scheduleName: { required: true, type: () => String }, isActive: { required: true, type: () => Boolean, default: false }, frequency: { required: true, type: () => String }, startTime: { required: true, type: () => Date }, endTime: { required: true, type: () => Date }, startDate: { required: true, type: () => Date }, endDate: { required: true, type: () => Date }, dayOfMonth: { required: true, type: () => Number }, lastRunAt: { required: true, type: () => Date }, nextRunAt: { required: true, type: () => Date }, dayOfWeek: { required: true, type: () => String }, job: { required: true, type: () => String }, cronExpression: { required: true, type: () => String }, module: { required: true, type: () => require("./module-metadata.entity").ModuleMetadata } };
24
24
  }
25
25
  };
26
26
  exports.ScheduledJob = ScheduledJob;
@@ -73,6 +73,10 @@ __decorate([
73
73
  (0, typeorm_1.Column)({ type: "varchar" }),
74
74
  __metadata("design:type", String)
75
75
  ], ScheduledJob.prototype, "job", void 0);
76
+ __decorate([
77
+ (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
78
+ __metadata("design:type", String)
79
+ ], ScheduledJob.prototype, "cronExpression", void 0);
76
80
  __decorate([
77
81
  (0, typeorm_1.Index)(),
78
82
  (0, typeorm_1.ManyToOne)(() => module_metadata_entity_1.ModuleMetadata, { nullable: false }),
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-job.entity.js","sourceRoot":"","sources":["../../src/entities/scheduled-job.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAAuE;AACvE,mDAA+C;AAC/C,qEAAqE;AAG9D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAAY;IAAvC;;QAKH,aAAQ,GAAY,KAAK,CAAC;KAyB7B;;iIAzBuB,KAAK;;CAyB5B,CAAA;AA9BY,oCAAY;AAGrB;IAFC,IAAA,eAAK,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;kDACP;AAErB;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;8CACD;AAE1B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;+CACV;AAElB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9B,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChC,IAAI;6CAAC;AAEd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9B,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChC,IAAI;6CAAC;AAEd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACzB;AAEnB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CAC1B;AAElB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;yCAChB;AAIZ;IAHC,IAAA,eAAK,GAAE;IACP,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uCAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACpD,IAAA,oBAAU,EAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;8BACnC,uCAAc;4CAAC;uBA7Bd,YAAY;IADxB,IAAA,gBAAM,EAAC,kBAAkB,CAAC;GACd,YAAY,CA8BxB","sourcesContent":["import { Entity, Column, ManyToOne, JoinColumn, Index } from 'typeorm';\nimport { CommonEntity } from './common.entity';\nimport { ModuleMetadata } from 'src/entities/module-metadata.entity';\n\n@Entity('ss_scheduled_job')\nexport class ScheduledJob extends CommonEntity {\n @Index({ unique: true })\n @Column({ type: \"varchar\" })\n scheduleName: string;\n @Column({ default: false })\n isActive: boolean = false;\n @Column({ type: \"varchar\" })\n frequency: string;\n @Column({ type: \"time\", nullable: true })\n startTime: Date;\n @Column({ type: \"time\", nullable: true })\n endTime: Date;\n @Column({ type: \"date\", nullable: true })\n startDate: Date;\n @Column({ type: \"date\", nullable: true })\n endDate: Date;\n @Column({ type: \"integer\", nullable: true })\n dayOfMonth: number;\n @Column({ nullable: true })\n lastRunAt: Date;\n @Column({ nullable: true })\n nextRunAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n dayOfWeek: string;\n @Column({ type: \"varchar\" })\n job: string;\n @Index()\n @ManyToOne(() => ModuleMetadata, { nullable: false })\n @JoinColumn({ referencedColumnName: 'id' })\n module: ModuleMetadata;\n}\n"]}
1
+ {"version":3,"file":"scheduled-job.entity.js","sourceRoot":"","sources":["../../src/entities/scheduled-job.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAAuE;AACvE,mDAA+C;AAC/C,qEAAqE;AAG9D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAAY;IAAvC;;QAKH,aAAQ,GAAY,KAAK,CAAC;KA2B7B;;iIA3BuB,KAAK;;CA2B5B,CAAA;AAhCY,oCAAY;AAGrB;IAFC,IAAA,eAAK,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;kDACP;AAErB;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;8CACD;AAE1B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;+CACV;AAElB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9B,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChC,IAAI;6CAAC;AAEd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9B,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChC,IAAI;6CAAC;AAEd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACzB;AAEnB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;+CAAC;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CAC1B;AAElB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;yCAChB;AAEZ;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACrB;AAIvB;IAHC,IAAA,eAAK,GAAE;IACP,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uCAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACpD,IAAA,oBAAU,EAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;8BACnC,uCAAc;4CAAC;uBA/Bd,YAAY;IADxB,IAAA,gBAAM,EAAC,kBAAkB,CAAC;GACd,YAAY,CAgCxB","sourcesContent":["import { Entity, Column, ManyToOne, JoinColumn, Index } from 'typeorm';\nimport { CommonEntity } from './common.entity';\nimport { ModuleMetadata } from 'src/entities/module-metadata.entity';\n\n@Entity('ss_scheduled_job')\nexport class ScheduledJob extends CommonEntity {\n @Index({ unique: true })\n @Column({ type: \"varchar\" })\n scheduleName: string;\n @Column({ default: false })\n isActive: boolean = false;\n @Column({ type: \"varchar\" })\n frequency: string;\n @Column({ type: \"time\", nullable: true })\n startTime: Date;\n @Column({ type: \"time\", nullable: true })\n endTime: Date;\n @Column({ type: \"date\", nullable: true })\n startDate: Date;\n @Column({ type: \"date\", nullable: true })\n endDate: Date;\n @Column({ type: \"integer\", nullable: true })\n dayOfMonth: number;\n @Column({ nullable: true })\n lastRunAt: Date;\n @Column({ nullable: true })\n nextRunAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n dayOfWeek: string;\n @Column({ type: \"varchar\" })\n job: string;\n @Column({ type: \"varchar\", nullable: true })\n cronExpression: string;\n @Index()\n @ManyToOne(() => ModuleMetadata, { nullable: false })\n @JoinColumn({ referencedColumnName: 'id' })\n module: ModuleMetadata;\n}\n"]}
@@ -1,5 +1,9 @@
1
+ export type CommandWithArgs = {
2
+ command: string;
3
+ args: string[];
4
+ };
1
5
  export declare class CommandService {
2
6
  private readonly logger;
3
- executeCommand(command: string): Promise<string>;
7
+ executeCommandWithArgs(commandWithArgs: CommandWithArgs): Promise<string>;
4
8
  }
5
9
  //# sourceMappingURL=command.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.service.d.ts","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":"AAGA,qBACa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAEpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkBvD"}
1
+ {"version":3,"file":"command.service.d.ts","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,qBACa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAKpD,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CA0ChF"}
@@ -14,18 +14,33 @@ let CommandService = CommandService_1 = class CommandService {
14
14
  constructor() {
15
15
  this.logger = new common_1.Logger(CommandService_1.name);
16
16
  }
17
- async executeCommand(command) {
18
- this.logger.debug(`Executing command :${command}`);
17
+ async executeCommandWithArgs(commandWithArgs) {
18
+ const { command, args } = commandWithArgs;
19
+ this.logger.debug(`Executing command: ${command} ${args.join(' ')}`);
19
20
  return new Promise((resolve, reject) => {
20
- (0, child_process_1.exec)(command, (error, stdout, stderr) => {
21
- if (error) {
22
- this.logger.error(`Error executing command :${command}`, error);
23
- reject(error);
24
- return;
25
- }
26
- if (stderr) {
27
- this.logger.error(`Error executing command :${command}`, stderr);
28
- reject(stderr);
21
+ const isWindows = process.platform === 'win32';
22
+ const spawnCommand = isWindows ? command : command;
23
+ const spawnArgs = args;
24
+ const child = (0, child_process_1.spawn)(spawnCommand, spawnArgs, {
25
+ shell: isWindows,
26
+ stdio: ['pipe', 'pipe', 'pipe'],
27
+ });
28
+ let stdout = '';
29
+ let stderr = '';
30
+ child.stdout.on('data', (data) => {
31
+ stdout += data.toString();
32
+ });
33
+ child.stderr.on('data', (data) => {
34
+ stderr += data.toString();
35
+ });
36
+ child.on('error', (error) => {
37
+ this.logger.error(`Error executing command: ${command}`, error);
38
+ reject(error);
39
+ });
40
+ child.on('close', (code) => {
41
+ if (code !== 0) {
42
+ this.logger.error(`Command failed with code ${code}: ${command}`, stderr);
43
+ reject(new Error(stderr || `Command failed with exit code ${code}`));
29
44
  return;
30
45
  }
31
46
  resolve(stdout);
@@ -1 +1 @@
1
- {"version":3,"file":"command.service.js","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,iDAAqC;AAG9B,IAAM,cAAc,sBAApB,MAAM,cAAc;IAApB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAoB5D,CAAC;IAlBC,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAA,oBAAI,EAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;oBAChE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;oBACjE,MAAM,CAAC,MAAM,CAAC,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAqB1B","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { exec } from 'child_process';\n\n@Injectable()\nexport class CommandService {\n private readonly logger = new Logger(CommandService.name);\n\n async executeCommand(command: string): Promise<string> {\n this.logger.debug(`Executing command :${command}`);\n return new Promise<string>((resolve, reject) => {\n exec(command, (error, stdout, stderr) => {\n if (error) {\n this.logger.error(`Error executing command :${command}`, error);\n reject(error);\n return;\n }\n if (stderr) {\n this.logger.error(`Error executing command :${command}`, stderr);\n reject(stderr);\n return;\n }\n resolve(stdout);\n });\n });\n }\n}\n"]}
1
+ {"version":3,"file":"command.service.js","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,iDAAsC;AAQ/B,IAAM,cAAc,sBAApB,MAAM,cAAc;IAApB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IA+C5D,CAAC;IA1CC,KAAK,CAAC,sBAAsB,CAAC,eAAgC;QAC3D,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;YAG/C,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC;YAEvB,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,YAAY,EAAE,SAAS,EAAE;gBAC3C,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChE,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,KAAK,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC1E,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,iCAAiC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrE,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhDY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAgD1B","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { spawn } from 'child_process';\n\nexport type CommandWithArgs = {\n command: string;\n args: string[];\n};\n\n@Injectable()\nexport class CommandService {\n private readonly logger = new Logger(CommandService.name);\n\n /**\n * Execute a command with arguments array (cross-platform compatible)\n */\n async executeCommandWithArgs(commandWithArgs: CommandWithArgs): Promise<string> {\n const { command, args } = commandWithArgs;\n this.logger.debug(`Executing command: ${command} ${args.join(' ')}`);\n\n return new Promise<string>((resolve, reject) => {\n const isWindows = process.platform === 'win32';\n\n // On Windows, we need to use cmd /c for commands that might be .cmd files (like npm scripts)\n const spawnCommand = isWindows ? command : command;\n const spawnArgs = args;\n\n const child = spawn(spawnCommand, spawnArgs, {\n shell: isWindows, // Use shell on Windows to handle .cmd files\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n child.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n child.on('error', (error) => {\n this.logger.error(`Error executing command: ${command}`, error);\n reject(error);\n });\n\n child.on('close', (code) => {\n if (code !== 0) {\n this.logger.error(`Command failed with code ${code}: ${command}`, stderr);\n reject(new Error(stderr || `Command failed with exit code ${code}`));\n return;\n }\n resolve(stdout);\n });\n });\n }\n}\n"]}
@@ -52,13 +52,13 @@ class ManyToOneRelationFieldCrudManager {
52
52
  if ((0, class_validator_1.isNotEmpty)(fieldId)) {
53
53
  dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ id: fieldId });
54
54
  if (this.options.required && (0, class_validator_1.isEmpty)(dto[this.options.fieldName])) {
55
- throw new Error(`ManyToOneRelationFieldCrudManager: Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);
55
+ throw new Error(`Field ${this.options.fieldName} resolution failed. Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);
56
56
  }
57
57
  }
58
58
  else {
59
59
  dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ [this.options.relationCoModelUserKeyFieldName]: fieldUserKeyValue });
60
60
  if (this.options.required && (0, class_validator_1.isEmpty)(dto[this.options.fieldName])) {
61
- throw new Error(`ManyToOneRelationFieldCrudManager: Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);
61
+ throw new Error(`Field ${this.options.fieldName} resolution failed. Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);
62
62
  }
63
63
  }
64
64
  return dto;
@@ -1 +1 @@
1
- {"version":3,"file":"ManyToOneRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts"],"names":[],"mappings":";;;AAAA,oEAAkE;AAClE,2CAAqD;AACrD,qDAAgE;AAEhE,sEAA+D;AAe/D,MAAa,iCAAiC;IAG1C,YAA6B,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;QAE/D,IAAI,CAAC,WAAW,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,GAAG,OAAO,CAAC,SAAS,SAAS,CAAC;IAC1D,CAAC;IACD,QAAQ,CAAC,GAAQ;QACb,MAAM,OAAO,GAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAW,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAEO,gBAAgB,CAAC,OAAY,EAAE,YAAoB;QACvD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAA,yBAAO,EAAC,OAAO,CAAC,IAAI,IAAA,yBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS,6BAA6B,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAClQ,IAAI,IAAA,4BAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,IAAA,4BAAU,EAAC,YAAY,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,wBAAwB,CAAC,OAAY;QACzC,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,CAAC,IAAA,+BAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACxH,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,6BAA6B,CAAC,YAAoB;QACtD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,CAAC,IAAA,0BAAQ,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACvH,IAAI,IAAA,yBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,kDAAkD,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACxJ,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAQ;QAC7B,MAAM,OAAO,GAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAW,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAG7D,IAAI,CAAC,IAAA,yBAAO,EAAC,OAAO,CAAC,CAAC,IAAI,IAAA,yBAAO,EAAC,iBAAiB,CAAC;YAAE,OAAO,GAAG,CAAC;QAEhE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC;YAC7C,MAAM,IAAI,4BAAmB,CAAC,+FAA+F,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC3J,CAAC;QAGD,MAAM,iBAAiB,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAI7E,IAAI,IAAA,4BAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3H,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAA,yBAAO,EAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,sDAAsD,OAAO,iBAAiB,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC;YAC9I,CAAC;QACL,CAAC;aACI,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACjL,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAA,yBAAO,EAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,2DAA2D,IAAI,CAAC,OAAO,CAAC,+BAA+B,KAAK,iBAAiB,iBAAiB,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC;YAC9M,CAAC;QACL,CAAC;QAGD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,yBAAyB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjC,CAAC;CASJ;AArFD,8EAqFC","sourcesContent":["import { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { BadRequestException } from \"@nestjs/common\";\nimport { isEmpty, isNotEmpty, isString } from \"class-validator\";\nimport { FieldCrudManager, ValidationError } from \"src/interfaces\";\nimport { IsParsableInt } from \"src/validators/is-parsable-int\";\nimport { EntityManager } from \"typeorm\";\n\nexport interface ManyToOneRelationFieldOptions {\n // Add options for relation field\n required: boolean | undefined | null;\n relationCoModelSingularName: string | undefined | null;\n fieldName: string | undefined | null;\n // modelUserKeyFieldName: string | undefined | null;\n modelSingularName: string | undefined | null;\n entityManager: EntityManager;\n relationCoModelUserKeyFieldName: string | undefined | null; \n}\n\n// This implementation is meant to be used for many-to-one relation field\nexport class ManyToOneRelationFieldCrudManager implements FieldCrudManager {\n private idFieldName: string;\n private userKeyFieldName: string;\n constructor(private readonly options: ManyToOneRelationFieldOptions) {\n // this.options = options;\n this.idFieldName = `${options.fieldName}Id`;\n this.userKeyFieldName = `${options.fieldName}UserKey`;\n }\n validate(dto: any) {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKey: string = dto[this.userKeyFieldName];\n return this.applyValidations(fieldId, fieldUserKey);\n }\n\n private applyValidations(fieldId: any, fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n this.isApplyRequiredValidation() && isEmpty(fieldId) && isEmpty(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: `Field: ${this.options.fieldName} is required. Either pass ${this.idFieldName} or ${this.userKeyFieldName}.` }) : \"no errors\";\n if (isNotEmpty(fieldId)) {\n errors.push(...this.applyIdFormatValidations(fieldId));\n }\n if (isNotEmpty(fieldUserKey)) {\n errors.push(...this.applyUserKeyFormatValidations(fieldUserKey));\n }\n return errors;\n }\n\n private applyIdFormatValidations(fieldId: any): ValidationError[] { //FIXME fieldId is any because it can be string or number. Keeping it any for compatibility with isParsableInt. \n const errors: ValidationError[] = [];\n !IsParsableInt(fieldId) ? errors.push({ field: this.options.fieldName, error: 'Field is not a integer' }) : \"no errors\";\n return errors;\n }\n\n private applyUserKeyFormatValidations(fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n !isString(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: 'Field is not a string' }) : \"no errors\";\n if (isEmpty(this.options.relationCoModelUserKeyFieldName)) {\n errors.push({ field: this.options.fieldName, error: `UserKey field name is not defined in the model ${this.options.relationCoModelSingularName}` });\n }\n return errors;\n }\n\n async transformForCreate(dto: any): Promise<any> {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKeyValue: string = dto[this.userKeyFieldName];\n\n // Avoid transforming if both fieldId and fieldUserKey is empty\n if ((isEmpty(fieldId)) && isEmpty(fieldUserKeyValue)) return dto;\n\n if (!this.options.relationCoModelSingularName) {\n throw new BadRequestException(`ManyToOneRelationFieldCrudManager: relationCoModelSingularName is not defined in the field: ${this.options.fieldName}`);\n }\n // // Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n const coModelEntityName = classify(this.options.relationCoModelSingularName);\n\n //Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n if (isNotEmpty(fieldId)) {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ id: fieldId });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`ManyToOneRelationFieldCrudManager: Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n else {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ [this.options.relationCoModelUserKeyFieldName]: fieldUserKeyValue });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`ManyToOneRelationFieldCrudManager: Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n\n\n return dto;\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n\n // Returns the entity target class from the entity name\n // private getRelatedEntityTarget(relatedEntityName: string): any {\n // const entityMetadatas = this.options.entityManager.connection.entityMetadatas;\n // const relatedEntityMetadata = entityMetadatas.find(em => em.name === relatedEntityName);\n // return relatedEntityMetadata.target;\n // }\n\n}"]}
1
+ {"version":3,"file":"ManyToOneRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { BadRequestException } from \"@nestjs/common\";\nimport { isEmpty, isNotEmpty, isString } from \"class-validator\";\nimport { FieldCrudManager, ValidationError } from \"src/interfaces\";\nimport { IsParsableInt } from \"src/validators/is-parsable-int\";\nimport { EntityManager } from \"typeorm\";\n\nexport interface ManyToOneRelationFieldOptions {\n // Add options for relation field\n required: boolean | undefined | null;\n relationCoModelSingularName: string | undefined | null;\n fieldName: string | undefined | null;\n // modelUserKeyFieldName: string | undefined | null;\n modelSingularName: string | undefined | null;\n entityManager: EntityManager;\n relationCoModelUserKeyFieldName: string | undefined | null; \n}\n\n// This implementation is meant to be used for many-to-one relation field\nexport class ManyToOneRelationFieldCrudManager implements FieldCrudManager {\n private idFieldName: string;\n private userKeyFieldName: string;\n constructor(private readonly options: ManyToOneRelationFieldOptions) {\n // this.options = options;\n this.idFieldName = `${options.fieldName}Id`;\n this.userKeyFieldName = `${options.fieldName}UserKey`;\n }\n validate(dto: any) {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKey: string = dto[this.userKeyFieldName];\n return this.applyValidations(fieldId, fieldUserKey);\n }\n\n private applyValidations(fieldId: any, fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n this.isApplyRequiredValidation() && isEmpty(fieldId) && isEmpty(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: `Field: ${this.options.fieldName} is required. Either pass ${this.idFieldName} or ${this.userKeyFieldName}.` }) : \"no errors\";\n if (isNotEmpty(fieldId)) {\n errors.push(...this.applyIdFormatValidations(fieldId));\n }\n if (isNotEmpty(fieldUserKey)) {\n errors.push(...this.applyUserKeyFormatValidations(fieldUserKey));\n }\n return errors;\n }\n\n private applyIdFormatValidations(fieldId: any): ValidationError[] { //FIXME fieldId is any because it can be string or number. Keeping it any for compatibility with isParsableInt. \n const errors: ValidationError[] = [];\n !IsParsableInt(fieldId) ? errors.push({ field: this.options.fieldName, error: 'Field is not a integer' }) : \"no errors\";\n return errors;\n }\n\n private applyUserKeyFormatValidations(fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n !isString(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: 'Field is not a string' }) : \"no errors\";\n if (isEmpty(this.options.relationCoModelUserKeyFieldName)) {\n errors.push({ field: this.options.fieldName, error: `UserKey field name is not defined in the model ${this.options.relationCoModelSingularName}` });\n }\n return errors;\n }\n\n async transformForCreate(dto: any): Promise<any> {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKeyValue: string = dto[this.userKeyFieldName];\n\n // Avoid transforming if both fieldId and fieldUserKey is empty\n if ((isEmpty(fieldId)) && isEmpty(fieldUserKeyValue)) return dto;\n\n if (!this.options.relationCoModelSingularName) {\n throw new BadRequestException(`ManyToOneRelationFieldCrudManager: relationCoModelSingularName is not defined in the field: ${this.options.fieldName}`);\n }\n // // Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n const coModelEntityName = classify(this.options.relationCoModelSingularName);\n\n //Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n if (isNotEmpty(fieldId)) {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ id: fieldId });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`Field ${this.options.fieldName} resolution failed. Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n else {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ [this.options.relationCoModelUserKeyFieldName]: fieldUserKeyValue });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`Field ${this.options.fieldName} resolution failed. Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n\n\n return dto;\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n\n // Returns the entity target class from the entity name\n // private getRelatedEntityTarget(relatedEntityName: string): any {\n // const entityMetadatas = this.options.entityManager.connection.entityMetadatas;\n // const relatedEntityMetadata = entityMetadatas.find(em => em.name === relatedEntityName);\n // return relatedEntityMetadata.target;\n // }\n\n}"]}
@@ -27,11 +27,12 @@ export declare class SchematicService {
27
27
  private readonly solidRegistry;
28
28
  private readonly logger;
29
29
  private readonly SCHEMATIC_PROJECT;
30
+ private readonly SCHEMATICS_COMMAND;
30
31
  constructor(commandService: CommandService, solidRegistry: SolidRegistry);
31
32
  executeSchematicCommand(command: string, options: GenerateModuleOptions | ModelAndFieldGenerationOptions, debug?: boolean): Promise<string>;
32
33
  private generateSchematicCommand;
33
- private buildFieldGenerationCommand;
34
- private buildModelGenerationCommand;
34
+ private buildFieldGenerationArgs;
35
+ private buildModelGenerationArgs;
35
36
  }
36
37
  export {};
37
38
  //# sourceMappingURL=schematic.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schematic.service.d.ts","sourceRoot":"","sources":["../../src/helpers/schematic.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,KAAK,8BAA8B,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AACF,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAGrD,qBACa,gBAAgB;IAGf,OAAO,CAAC,QAAQ,CAAC,cAAc;IAAkB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF3F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;gBAC5C,cAAc,EAAE,cAAc,EAAmB,aAAa,EAAE,aAAa;IAEpG,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,GAAG,8BAA8B,EAC/D,KAAK,UAAQ,GACZ,OAAO,CAAC,MAAM,CAAC;IAMlB,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,2BAA2B;CA6CpC"}
1
+ {"version":3,"file":"schematic.service.d.ts","sourceRoot":"","sources":["../../src/helpers/schematic.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,KAAK,8BAA8B,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AACF,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAGrD,qBACa,gBAAgB;IAKf,OAAO,CAAC,QAAQ,CAAC,cAAc;IAAkB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAJ3F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;IACzE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgB;gBAEtB,cAAc,EAAE,cAAc,EAAmB,aAAa,EAAE,aAAa;IAEpG,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,GAAG,8BAA8B,EAC/D,KAAK,UAAQ,GACZ,OAAO,CAAC,MAAM,CAAC;IAKlB,OAAO,CAAC,wBAAwB;IA4BhC,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,wBAAwB;CAgDjC"}
@@ -24,74 +24,79 @@ let SchematicService = SchematicService_1 = class SchematicService {
24
24
  this.solidRegistry = solidRegistry;
25
25
  this.logger = new common_1.Logger(SchematicService_1.name);
26
26
  this.SCHEMATIC_PROJECT = '@solidstarters/solid-code-builder';
27
+ this.SCHEMATICS_COMMAND = 'schematics';
27
28
  }
28
29
  async executeSchematicCommand(command, options, debug = false) {
29
- return await this.commandService.executeCommand(this.generateSchematicCommand(command, options, debug));
30
+ const commandWithArgs = this.generateSchematicCommand(command, options, debug);
31
+ return await this.commandService.executeCommandWithArgs(commandWithArgs);
30
32
  }
31
33
  generateSchematicCommand(command, options, debug) {
32
- const baseCommand = `schematics ${this.SCHEMATIC_PROJECT}:${command} --debug=${debug}`;
34
+ const schematicName = `${this.SCHEMATIC_PROJECT}:${command}`;
35
+ const baseArgs = [schematicName, `--debug=${debug}`];
33
36
  if (command === exports.REMOVE_FIELDS_COMMAND ||
34
37
  command === exports.REFRESH_MODEL_COMMAND) {
35
38
  const { fields, ...modelSpecificOptions } = options;
36
- const modelCommand = this.buildModelGenerationCommand(baseCommand, modelSpecificOptions);
37
- const fieldCommand = this.buildFieldGenerationCommand(fields);
38
- const schematicCommand = modelCommand + ' ' + fieldCommand;
39
- this.logger.debug('schematicCommand', schematicCommand);
40
- return schematicCommand;
39
+ const modelArgs = this.buildModelGenerationArgs(modelSpecificOptions);
40
+ const fieldArgs = this.buildFieldGenerationArgs(fields);
41
+ const args = [...baseArgs, ...modelArgs, ...fieldArgs];
42
+ this.logger.debug('schematicCommand args', args);
43
+ return { command: this.SCHEMATICS_COMMAND, args };
41
44
  }
42
45
  else if (command === exports.ADD_MODULE_COMMAND) {
43
46
  const moduleOptions = options;
44
- const schematicCommand = ` ${baseCommand} --module=${moduleOptions.module}`;
45
- this.logger.debug('schematicCommand', schematicCommand);
46
- return schematicCommand;
47
+ const args = [...baseArgs, `--module=${moduleOptions.module}`];
48
+ this.logger.debug('schematicCommand args', args);
49
+ return { command: this.SCHEMATICS_COMMAND, args };
47
50
  }
48
51
  else {
49
52
  throw new Error('Schematic command not supported.');
50
53
  }
51
54
  }
52
- buildFieldGenerationCommand(fields) {
55
+ buildFieldGenerationArgs(fields) {
53
56
  return fields
54
57
  .filter((field) => {
55
58
  return !this.solidRegistry.getCommonEntityKeys().map(key => key.toString()).includes(field.name);
56
59
  })
57
60
  .map((field) => {
58
- return `--fields='${JSON.stringify(field).replace(/'/g, "\\'")}'`;
59
- })
60
- .join(' ');
61
+ return `--fields=${JSON.stringify(field)}`;
62
+ });
61
63
  }
62
- buildModelGenerationCommand(baseCommand, modelSpecificOptions) {
63
- let modelCommand = `${baseCommand} --module=${modelSpecificOptions.module} --model=${modelSpecificOptions.model}`;
64
+ buildModelGenerationArgs(modelSpecificOptions) {
65
+ const args = [
66
+ `--module=${modelSpecificOptions.module}`,
67
+ `--model=${modelSpecificOptions.model}`,
68
+ ];
64
69
  if (modelSpecificOptions.moduleDisplayName) {
65
- modelCommand += ` --module-display-name=${(0, lodash_1.snakeCase)(modelSpecificOptions.moduleDisplayName)}`;
70
+ args.push(`--module-display-name=${(0, lodash_1.snakeCase)(modelSpecificOptions.moduleDisplayName)}`);
66
71
  }
67
72
  if (modelSpecificOptions.table) {
68
- modelCommand += ` --table=${modelSpecificOptions.table}`;
73
+ args.push(`--table=${modelSpecificOptions.table}`);
69
74
  }
70
75
  if (modelSpecificOptions.dataSource) {
71
- modelCommand += ` --data-source=${modelSpecificOptions.dataSource}`;
76
+ args.push(`--data-source=${modelSpecificOptions.dataSource}`);
72
77
  }
73
78
  if (modelSpecificOptions.modelEnableSoftDelete) {
74
- modelCommand += ` --model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`;
79
+ args.push(`--model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`);
75
80
  }
76
81
  if (modelSpecificOptions.parentModel) {
77
- modelCommand += ` --parent-model=${modelSpecificOptions.parentModel}`;
82
+ args.push(`--parent-model=${modelSpecificOptions.parentModel}`);
78
83
  }
79
84
  if (modelSpecificOptions.parentModule) {
80
- modelCommand += ` --parent-module=${modelSpecificOptions.parentModule}`;
85
+ args.push(`--parent-module=${modelSpecificOptions.parentModule}`);
81
86
  }
82
87
  if (modelSpecificOptions.draftPublishWorkflowEnabled) {
83
- modelCommand += ` --draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`;
88
+ args.push(`--draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`);
84
89
  }
85
90
  if (modelSpecificOptions.isLegacyTable) {
86
- modelCommand += ` --is-legacy-table=${modelSpecificOptions.isLegacyTable}`;
91
+ args.push(`--is-legacy-table=${modelSpecificOptions.isLegacyTable}`);
87
92
  }
88
93
  if (modelSpecificOptions.isLegacyTableWithId) {
89
- modelCommand += ` --is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`;
94
+ args.push(`--is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`);
90
95
  }
91
96
  if (modelSpecificOptions.dataSourceType) {
92
- modelCommand += ` --data-source-type=${modelSpecificOptions.dataSourceType}`;
97
+ args.push(`--data-source-type=${modelSpecificOptions.dataSourceType}`);
93
98
  }
94
- return modelCommand;
99
+ return args;
95
100
  }
96
101
  };
97
102
  exports.SchematicService = SchematicService;
@@ -1 +1 @@
1
- {"version":3,"file":"schematic.service.js","sourceRoot":"","sources":["../../src/helpers/schematic.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { snakeCase } from \"lodash\";\nimport { FieldMetadata } from 'src/entities/field-metadata.entity';\nimport { CommandService } from './command.service';\nimport { SolidRegistry } from './solid-registry';\n\nexport const ADD_MODULE_COMMAND = 'add-module';\nexport type GenerateModuleOptions = {\n module: string;\n};\ntype ModelGenerationOptions = Omit<ModelAndFieldGenerationOptions, 'fields'>;\n\ntype ModelAndFieldGenerationOptions = {\n module: string;\n model: string;\n moduleDisplayName: string;\n table?: string;\n dataSource: string;\n modelEnableSoftDelete?: boolean;\n parentModel?: string; \n parentModule?: string;\n draftPublishWorkflowEnabled?: boolean;\n isLegacyTable?: boolean;\n isLegacyTableWithId?: boolean;\n dataSourceType?: string;\n fields: FieldMetadata[]; //FIXME This type can be improved\n};\nexport const REMOVE_FIELDS_COMMAND = 'remove-fields';\nexport const REFRESH_MODEL_COMMAND = 'refresh-model';\n\n//TODO Rename to CodeBuilder service\n@Injectable()\nexport class SchematicService {\n private readonly logger = new Logger(SchematicService.name);\n private readonly SCHEMATIC_PROJECT = '@solidstarters/solid-code-builder';\n constructor(private readonly commandService: CommandService, private readonly solidRegistry: SolidRegistry) { }\n\n async executeSchematicCommand(\n command: string,\n options: GenerateModuleOptions | ModelAndFieldGenerationOptions,\n debug = false,\n ): Promise<string> {\n return await this.commandService.executeCommand(\n this.generateSchematicCommand(command, options, debug),\n );\n }\n\n private generateSchematicCommand(\n command: string,\n options: GenerateModuleOptions | ModelAndFieldGenerationOptions,\n debug: boolean,\n ): string {\n const baseCommand = `schematics ${this.SCHEMATIC_PROJECT}:${command} --debug=${debug}`;\n if (\n command === REMOVE_FIELDS_COMMAND ||\n command === REFRESH_MODEL_COMMAND\n ) {\n const {fields, ...modelSpecificOptions} = options as ModelAndFieldGenerationOptions;\n const modelCommand = this.buildModelGenerationCommand(baseCommand, modelSpecificOptions);\n const fieldCommand = this.buildFieldGenerationCommand(fields);\n const schematicCommand = modelCommand + ' ' + fieldCommand;\n this.logger.debug('schematicCommand', schematicCommand);\n return schematicCommand;\n } else if (command === ADD_MODULE_COMMAND) {\n const moduleOptions = options as GenerateModuleOptions;\n const schematicCommand = ` ${baseCommand} --module=${moduleOptions.module}`;\n this.logger.debug('schematicCommand', schematicCommand);\n return schematicCommand;\n } else {\n throw new Error('Schematic command not supported.');\n }\n }\n\n private buildFieldGenerationCommand(fields: FieldMetadata[]) {\n return fields\n .filter((field) => {\n return !this.solidRegistry.getCommonEntityKeys().map(key => key.toString()).includes(field.name);\n })\n .map((field) => {\n return `--fields='${JSON.stringify(field).replace(/'/g, \"\\\\'\")}'`;\n })\n .join(' ');\n }\n\n private buildModelGenerationCommand(baseCommand: string, modelSpecificOptions: ModelGenerationOptions): string {\n let modelCommand = `${baseCommand} --module=${modelSpecificOptions.module} --model=${modelSpecificOptions.model}`;\n\n // Make below options code generate i.e if option exists then add to command with proper casing\n if (modelSpecificOptions.moduleDisplayName) {\n modelCommand += ` --module-display-name=${snakeCase(modelSpecificOptions.moduleDisplayName)}`;\n }\n\n if (modelSpecificOptions.table) {\n modelCommand += ` --table=${modelSpecificOptions.table}`;\n }\n\n if (modelSpecificOptions.dataSource) {\n modelCommand += ` --data-source=${modelSpecificOptions.dataSource}`;\n }\n\n if (modelSpecificOptions.modelEnableSoftDelete) {\n modelCommand += ` --model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`;\n }\n\n if (modelSpecificOptions.parentModel) {\n modelCommand += ` --parent-model=${modelSpecificOptions.parentModel}`;\n }\n if (modelSpecificOptions.parentModule) {\n modelCommand += ` --parent-module=${modelSpecificOptions.parentModule}`;\n }\n\n if (modelSpecificOptions.draftPublishWorkflowEnabled) {\n modelCommand += ` --draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`;\n }\n\n if (modelSpecificOptions.isLegacyTable) {\n modelCommand += ` --is-legacy-table=${modelSpecificOptions.isLegacyTable}`;\n }\n\n if (modelSpecificOptions.isLegacyTableWithId) {\n modelCommand += ` --is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`;\n }\n\n if (modelSpecificOptions.dataSourceType) {\n modelCommand += ` --data-source-type=${modelSpecificOptions.dataSourceType}`;\n }\n \n return modelCommand;\n }\n}\n"]}
1
+ {"version":3,"file":"schematic.service.js","sourceRoot":"","sources":["../../src/helpers/schematic.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { snakeCase } from \"lodash\";\nimport { FieldMetadata } from 'src/entities/field-metadata.entity';\nimport { CommandService, CommandWithArgs } from './command.service';\nimport { SolidRegistry } from './solid-registry';\n\nexport const ADD_MODULE_COMMAND = 'add-module';\nexport type GenerateModuleOptions = {\n module: string;\n};\ntype ModelGenerationOptions = Omit<ModelAndFieldGenerationOptions, 'fields'>;\n\ntype ModelAndFieldGenerationOptions = {\n module: string;\n model: string;\n moduleDisplayName: string;\n table?: string;\n dataSource: string;\n modelEnableSoftDelete?: boolean;\n parentModel?: string;\n parentModule?: string;\n draftPublishWorkflowEnabled?: boolean;\n isLegacyTable?: boolean;\n isLegacyTableWithId?: boolean;\n dataSourceType?: string;\n fields: FieldMetadata[]; //FIXME This type can be improved\n};\nexport const REMOVE_FIELDS_COMMAND = 'remove-fields';\nexport const REFRESH_MODEL_COMMAND = 'refresh-model';\n\n//TODO Rename to CodeBuilder service\n@Injectable()\nexport class SchematicService {\n private readonly logger = new Logger(SchematicService.name);\n private readonly SCHEMATIC_PROJECT = '@solidstarters/solid-code-builder';\n private readonly SCHEMATICS_COMMAND = 'schematics';\n\n constructor(private readonly commandService: CommandService, private readonly solidRegistry: SolidRegistry) { }\n\n async executeSchematicCommand(\n command: string,\n options: GenerateModuleOptions | ModelAndFieldGenerationOptions,\n debug = false,\n ): Promise<string> {\n const commandWithArgs = this.generateSchematicCommand(command, options, debug);\n return await this.commandService.executeCommandWithArgs(commandWithArgs);\n }\n\n private generateSchematicCommand(\n command: string,\n options: GenerateModuleOptions | ModelAndFieldGenerationOptions,\n debug: boolean,\n ): CommandWithArgs {\n const schematicName = `${this.SCHEMATIC_PROJECT}:${command}`;\n const baseArgs = [schematicName, `--debug=${debug}`];\n\n if (\n command === REMOVE_FIELDS_COMMAND ||\n command === REFRESH_MODEL_COMMAND\n ) {\n const { fields, ...modelSpecificOptions } = options as ModelAndFieldGenerationOptions;\n const modelArgs = this.buildModelGenerationArgs(modelSpecificOptions);\n const fieldArgs = this.buildFieldGenerationArgs(fields);\n const args = [...baseArgs, ...modelArgs, ...fieldArgs];\n this.logger.debug('schematicCommand args', args);\n return { command: this.SCHEMATICS_COMMAND, args };\n } else if (command === ADD_MODULE_COMMAND) {\n const moduleOptions = options as GenerateModuleOptions;\n const args = [...baseArgs, `--module=${moduleOptions.module}`];\n this.logger.debug('schematicCommand args', args);\n return { command: this.SCHEMATICS_COMMAND, args };\n } else {\n throw new Error('Schematic command not supported.');\n }\n }\n\n private buildFieldGenerationArgs(fields: FieldMetadata[]): string[] {\n return fields\n .filter((field) => {\n return !this.solidRegistry.getCommonEntityKeys().map(key => key.toString()).includes(field.name);\n })\n .map((field) => {\n // Using argument array eliminates the need for shell-specific quoting\n return `--fields=${JSON.stringify(field)}`;\n });\n }\n\n private buildModelGenerationArgs(modelSpecificOptions: ModelGenerationOptions): string[] {\n const args: string[] = [\n `--module=${modelSpecificOptions.module}`,\n `--model=${modelSpecificOptions.model}`,\n ];\n\n if (modelSpecificOptions.moduleDisplayName) {\n args.push(`--module-display-name=${snakeCase(modelSpecificOptions.moduleDisplayName)}`);\n }\n\n if (modelSpecificOptions.table) {\n args.push(`--table=${modelSpecificOptions.table}`);\n }\n\n if (modelSpecificOptions.dataSource) {\n args.push(`--data-source=${modelSpecificOptions.dataSource}`);\n }\n\n if (modelSpecificOptions.modelEnableSoftDelete) {\n args.push(`--model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`);\n }\n\n if (modelSpecificOptions.parentModel) {\n args.push(`--parent-model=${modelSpecificOptions.parentModel}`);\n }\n\n if (modelSpecificOptions.parentModule) {\n args.push(`--parent-module=${modelSpecificOptions.parentModule}`);\n }\n\n if (modelSpecificOptions.draftPublishWorkflowEnabled) {\n args.push(`--draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`);\n }\n\n if (modelSpecificOptions.isLegacyTable) {\n args.push(`--is-legacy-table=${modelSpecificOptions.isLegacyTable}`);\n }\n\n if (modelSpecificOptions.isLegacyTableWithId) {\n args.push(`--is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`);\n }\n\n if (modelSpecificOptions.dataSourceType) {\n args.push(`--data-source-type=${modelSpecificOptions.dataSourceType}`);\n }\n\n return args;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-job.repository.d.ts","sourceRoot":"","sources":["../../src/repository/scheduled-job.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAmB9D,qBACa,sBAAuB,SAAQ,mBAAmB,CAAC,YAAY,CAAC;IAErE,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;gBAF9C,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB;IAQvD,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAoCjE,aAAa,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;CA4BvE"}
1
+ {"version":3,"file":"scheduled-job.repository.d.ts","sourceRoot":"","sources":["../../src/repository/scheduled-job.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAmB9D,qBACa,sBAAuB,SAAQ,mBAAmB,CAAC,YAAY,CAAC;IAErE,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;gBAF9C,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB;IAQvD,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAqCjE,aAAa,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;CA4BvE"}
@@ -54,6 +54,7 @@ let ScheduledJobRepository = class ScheduledJobRepository extends solid_base_rep
54
54
  job: populatedScheduledJob.job,
55
55
  moduleUserKey: populatedScheduledJob.module.name,
56
56
  moduleId: populatedScheduledJob.module.id,
57
+ cronExpression: populatedScheduledJob.cronExpression,
57
58
  };
58
59
  }
59
60
  async upsertWithDto(dto) {