@punks/cli 0.1.0

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 (95) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc +127 -0
  3. package/.prettierignore +4 -0
  4. package/.prettierrc +7 -0
  5. package/dist/abstractions/builder.d.ts +4 -0
  6. package/dist/abstractions/builder.js +7 -0
  7. package/dist/builders/dotnet/base.d.ts +16 -0
  8. package/dist/builders/dotnet/base.js +43 -0
  9. package/dist/builders/dotnet/entity-configuration/index.d.ts +8 -0
  10. package/dist/builders/dotnet/entity-configuration/index.js +27 -0
  11. package/dist/builders/dotnet/entity-converter/index.d.ts +8 -0
  12. package/dist/builders/dotnet/entity-converter/index.js +27 -0
  13. package/dist/builders/dotnet/entity-model-create/index.d.ts +8 -0
  14. package/dist/builders/dotnet/entity-model-create/index.js +27 -0
  15. package/dist/builders/dotnet/entity-model-dto/index.d.ts +8 -0
  16. package/dist/builders/dotnet/entity-model-dto/index.js +27 -0
  17. package/dist/builders/dotnet/entity-model-list-item-dto/index.d.ts +8 -0
  18. package/dist/builders/dotnet/entity-model-list-item-dto/index.js +27 -0
  19. package/dist/builders/dotnet/entity-model-update/index.d.ts +8 -0
  20. package/dist/builders/dotnet/entity-model-update/index.js +27 -0
  21. package/dist/builders/dotnet/entity-search-parameters/index.d.ts +8 -0
  22. package/dist/builders/dotnet/entity-search-parameters/index.js +27 -0
  23. package/dist/builders/dotnet/entity-search-query-builder/index.d.ts +8 -0
  24. package/dist/builders/dotnet/entity-search-query-builder/index.js +27 -0
  25. package/dist/builders/dotnet/firestore-connector/index.d.ts +8 -0
  26. package/dist/builders/dotnet/firestore-connector/index.js +27 -0
  27. package/dist/builders/dotnet/firestore-mapper/index.d.ts +8 -0
  28. package/dist/builders/dotnet/firestore-mapper/index.js +27 -0
  29. package/dist/builders/dotnet/types.d.ts +9 -0
  30. package/dist/builders/dotnet/types.js +3 -0
  31. package/dist/commands/entity-add/__test__/dotnet/common.d.ts +2 -0
  32. package/dist/commands/entity-add/__test__/dotnet/common.js +11 -0
  33. package/dist/commands/entity-add/__test__/dotnet/render.configuration.spec.d.ts +1 -0
  34. package/dist/commands/entity-add/__test__/dotnet/render.configuration.spec.js +21 -0
  35. package/dist/commands/entity-add/__test__/dotnet/render.converter.spec.d.ts +1 -0
  36. package/dist/commands/entity-add/__test__/dotnet/render.converter.spec.js +21 -0
  37. package/dist/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.d.ts +1 -0
  38. package/dist/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.js +21 -0
  39. package/dist/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.d.ts +1 -0
  40. package/dist/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.js +21 -0
  41. package/dist/commands/entity-add/__test__/dotnet/render.model-create.spec.d.ts +1 -0
  42. package/dist/commands/entity-add/__test__/dotnet/render.model-create.spec.js +21 -0
  43. package/dist/commands/entity-add/__test__/dotnet/render.model-dto.spec.d.ts +1 -0
  44. package/dist/commands/entity-add/__test__/dotnet/render.model-dto.spec.js +21 -0
  45. package/dist/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.d.ts +1 -0
  46. package/dist/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.js +21 -0
  47. package/dist/commands/entity-add/__test__/dotnet/render.model-update.spec.d.ts +1 -0
  48. package/dist/commands/entity-add/__test__/dotnet/render.model-update.spec.js +21 -0
  49. package/dist/commands/entity-add/__test__/dotnet/render.search-parameters.spec.d.ts +1 -0
  50. package/dist/commands/entity-add/__test__/dotnet/render.search-parameters.spec.js +21 -0
  51. package/dist/commands/entity-add/__test__/dotnet/render.search-query.spec.d.ts +1 -0
  52. package/dist/commands/entity-add/__test__/dotnet/render.search-query.spec.js +21 -0
  53. package/dist/commands/entity-add/index.d.ts +25 -0
  54. package/dist/commands/entity-add/index.js +44 -0
  55. package/dist/logging/index.d.ts +8 -0
  56. package/dist/logging/index.js +28 -0
  57. package/dist/providers/rendering/base.d.ts +3 -0
  58. package/dist/providers/rendering/base.js +7 -0
  59. package/dist/providers/rendering/factory.d.ts +5 -0
  60. package/dist/providers/rendering/factory.js +16 -0
  61. package/dist/providers/rendering/handlebars.d.ts +4 -0
  62. package/dist/providers/rendering/handlebars.js +16 -0
  63. package/dist/renderer/index.d.ts +6 -0
  64. package/dist/renderer/index.js +28 -0
  65. package/dist/run.d.ts +2 -0
  66. package/dist/run.js +65 -0
  67. package/dist/services/folders.d.ts +1 -0
  68. package/dist/services/folders.js +31 -0
  69. package/dist/types/commands.d.ts +5 -0
  70. package/dist/types/commands.js +3 -0
  71. package/dist/utils/strings.d.ts +4 -0
  72. package/dist/utils/strings.js +22 -0
  73. package/em-cli +0 -0
  74. package/package.json +58 -0
  75. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.configuration.spec.ts.snap +49 -0
  76. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.converter.spec.ts.snap +53 -0
  77. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-connector.spec.ts.snap +20 -0
  78. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-mapper.spec.ts.snap +29 -0
  79. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-create.spec.ts.snap +10 -0
  80. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-dto.spec.ts.snap +10 -0
  81. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-list-item-dto.spec.ts.snap +13 -0
  82. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-update.spec.ts.snap +11 -0
  83. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-parameters.spec.ts.snap +30 -0
  84. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-query.spec.ts.snap +42 -0
  85. package/templates/dotnet/NewEntity/Configuration/<Entity>Configuration.cs.template +48 -0
  86. package/templates/dotnet/NewEntity/Connectors/<Entity>FirestoreConnector.cs.template +15 -0
  87. package/templates/dotnet/NewEntity/Converters/<Entity>Converter.cs.template +48 -0
  88. package/templates/dotnet/NewEntity/Mappers/<Entity>FirestoreMapper.cs.template +25 -0
  89. package/templates/dotnet/NewEntity/Models/<Entity>CreateInput.cs.template +6 -0
  90. package/templates/dotnet/NewEntity/Models/<Entity>Dto.cs.template +6 -0
  91. package/templates/dotnet/NewEntity/Models/<Entity>ListItemDto.cs.template +8 -0
  92. package/templates/dotnet/NewEntity/Models/<Entity>UpdateInput.cs.template +6 -0
  93. package/templates/dotnet/NewEntity/Search/<Entity>QueryBuilder.cs.template +38 -0
  94. package/templates/dotnet/NewEntity/Search/<Entity>SearchParameters.cs.template +25 -0
  95. package/tsconfig.json +25 -0
package/dist/run.js ADDED
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ require("source-map-support/register");
8
+ const yargs_1 = __importDefault(require("yargs/yargs"));
9
+ const entity_add_1 = require("./commands/entity-add");
10
+ const cli = yargs_1.default(process.argv.slice(2))
11
+ .scriptName("entity add")
12
+ .command("dotnet entity add", "Dotnet Entity Add", (args) => args.options({
13
+ name: { type: "string", alias: "n", demandOption: true },
14
+ repository: {
15
+ type: "string",
16
+ choices: ["mssql", "firestore"],
17
+ coerce: (x) => x,
18
+ alias: "r",
19
+ demandOption: true,
20
+ },
21
+ connectors: {
22
+ type: "string",
23
+ choices: ["firestore"],
24
+ coerce: (x) => x,
25
+ array: true,
26
+ alias: "c",
27
+ demandOption: false,
28
+ },
29
+ firestoreDocument: {
30
+ type: "string",
31
+ alias: "fd",
32
+ demandOption: false,
33
+ },
34
+ namespace: {
35
+ type: "string",
36
+ alias: "ns",
37
+ default: "namespace",
38
+ demandOption: true,
39
+ },
40
+ mapper: {
41
+ type: "string",
42
+ choices: ["mapster"],
43
+ coerce: (x) => x,
44
+ alias: "m",
45
+ default: "mapster",
46
+ demandOption: false,
47
+ },
48
+ }), async (argv) => {
49
+ await entity_add_1.dotNetEntityAddCommand({
50
+ name: argv.name,
51
+ repository: argv.repository,
52
+ connectors: argv.connectors,
53
+ firestoreDocument: argv.firestoreDocument,
54
+ }, {
55
+ type: entity_add_1.ProjectType.DotNet,
56
+ namespace: argv.namespace,
57
+ mapper: argv.mapper,
58
+ renderingProvider: "handlebars",
59
+ });
60
+ });
61
+ cli
62
+ .parseAsync()
63
+ .then(() => console.log("Done 🚀"))
64
+ .catch((e) => console.error(e));
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSx1Q0FBb0M7QUFDcEMsd0RBQStCO0FBQy9CLHNEQU84QjtBQUU5QixNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDckMsVUFBVSxDQUFDLFlBQVksQ0FBQztLQUN4QixPQUFPLENBQ04sbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNYLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO0lBQ3hELFVBQVUsRUFBRTtRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztRQUMvQixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQXFCO1FBQ3BDLEtBQUssRUFBRSxHQUFHO1FBQ1YsWUFBWSxFQUFFLElBQUk7S0FDbkI7SUFDRCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUN0QixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQXNCO1FBQ3JDLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLEdBQUc7UUFDVixZQUFZLEVBQUUsS0FBSztLQUNwQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLElBQUk7UUFDWCxZQUFZLEVBQUUsS0FBSztLQUNwQjtJQUNELFNBQVMsRUFBRTtRQUNULElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUUsV0FBVztRQUNwQixZQUFZLEVBQUUsSUFBSTtLQUNuQjtJQUNELE1BQU0sRUFBRTtRQUNOLElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBdUI7UUFDdEMsS0FBSyxFQUFFLEdBQUc7UUFDVixPQUFPLEVBQUUsU0FBUztRQUNsQixZQUFZLEVBQUUsS0FBSztLQUNwQjtDQUNGLENBQUMsRUFDSixLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDYixNQUFNLG1DQUFzQixDQUMxQjtRQUNFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtRQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDM0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtLQUMxQyxFQUNEO1FBQ0UsSUFBSSxFQUFFLHdCQUFXLENBQUMsTUFBTTtRQUN4QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7UUFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLGlCQUFpQixFQUFFLFlBQVk7S0FDUCxDQUMzQixDQUFBO0FBQ0gsQ0FBQyxDQUNGLENBQUE7QUFFSCxHQUFHO0tBQ0EsVUFBVSxFQUFFO0tBQ1osSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCBcInNvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3RlclwiXG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzL3lhcmdzXCJcbmltcG9ydCB7XG4gIERvdE5ldEVudGl0eU1hcHBlcixcbiAgRG90TmV0UHJvamVjdFNldHRpbmdzLFxuICBFbnRpdHlDb25uZWN0b3IsXG4gIEVudGl0eVJlcG9zaXRvcnksXG4gIFByb2plY3RUeXBlLFxuICBkb3ROZXRFbnRpdHlBZGRDb21tYW5kLFxufSBmcm9tIFwiLi9jb21tYW5kcy9lbnRpdHktYWRkXCJcblxuY29uc3QgY2xpID0geWFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKVxuICAuc2NyaXB0TmFtZShcImVudGl0eSBhZGRcIilcbiAgLmNvbW1hbmQoXG4gICAgXCJkb3RuZXQgZW50aXR5IGFkZFwiLFxuICAgIFwiRG90bmV0IEVudGl0eSBBZGRcIixcbiAgICAoYXJncykgPT5cbiAgICAgIGFyZ3Mub3B0aW9ucyh7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogXCJzdHJpbmdcIiwgYWxpYXM6IFwiblwiLCBkZW1hbmRPcHRpb246IHRydWUgfSxcbiAgICAgICAgcmVwb3NpdG9yeToge1xuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgY2hvaWNlczogW1wibXNzcWxcIiwgXCJmaXJlc3RvcmVcIl0sXG4gICAgICAgICAgY29lcmNlOiAoeCkgPT4geCBhcyBFbnRpdHlSZXBvc2l0b3J5LFxuICAgICAgICAgIGFsaWFzOiBcInJcIixcbiAgICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbm5lY3RvcnM6IHtcbiAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgIGNob2ljZXM6IFtcImZpcmVzdG9yZVwiXSxcbiAgICAgICAgICBjb2VyY2U6ICh4KSA9PiB4IGFzIEVudGl0eUNvbm5lY3RvcltdLFxuICAgICAgICAgIGFycmF5OiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiBcImNcIixcbiAgICAgICAgICBkZW1hbmRPcHRpb246IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBmaXJlc3RvcmVEb2N1bWVudDoge1xuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgYWxpYXM6IFwiZmRcIixcbiAgICAgICAgICBkZW1hbmRPcHRpb246IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBuYW1lc3BhY2U6IHtcbiAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgIGFsaWFzOiBcIm5zXCIsXG4gICAgICAgICAgZGVmYXVsdDogXCJuYW1lc3BhY2VcIixcbiAgICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1hcHBlcjoge1xuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgY2hvaWNlczogW1wibWFwc3RlclwiXSxcbiAgICAgICAgICBjb2VyY2U6ICh4KSA9PiB4IGFzIERvdE5ldEVudGl0eU1hcHBlcixcbiAgICAgICAgICBhbGlhczogXCJtXCIsXG4gICAgICAgICAgZGVmYXVsdDogXCJtYXBzdGVyXCIsXG4gICAgICAgICAgZGVtYW5kT3B0aW9uOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIGFzeW5jIChhcmd2KSA9PiB7XG4gICAgICBhd2FpdCBkb3ROZXRFbnRpdHlBZGRDb21tYW5kKFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogYXJndi5uYW1lLFxuICAgICAgICAgIHJlcG9zaXRvcnk6IGFyZ3YucmVwb3NpdG9yeSxcbiAgICAgICAgICBjb25uZWN0b3JzOiBhcmd2LmNvbm5lY3RvcnMsXG4gICAgICAgICAgZmlyZXN0b3JlRG9jdW1lbnQ6IGFyZ3YuZmlyZXN0b3JlRG9jdW1lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBQcm9qZWN0VHlwZS5Eb3ROZXQsXG4gICAgICAgICAgbmFtZXNwYWNlOiBhcmd2Lm5hbWVzcGFjZSxcbiAgICAgICAgICBtYXBwZXI6IGFyZ3YubWFwcGVyLFxuICAgICAgICAgIHJlbmRlcmluZ1Byb3ZpZGVyOiBcImhhbmRsZWJhcnNcIixcbiAgICAgICAgfSBhcyBEb3ROZXRQcm9qZWN0U2V0dGluZ3NcbiAgICAgIClcbiAgICB9XG4gIClcblxuY2xpXG4gIC5wYXJzZUFzeW5jKClcbiAgLnRoZW4oKCkgPT4gY29uc29sZS5sb2coXCJEb25lIPCfmoBcIikpXG4gIC5jYXRjaCgoZSkgPT4gY29uc29sZS5lcnJvcihlKSlcbiJdfQ==
@@ -0,0 +1 @@
1
+ export declare const discoverCliBasePath: (currentPath?: string) => string;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.discoverCliBasePath = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const ENTITY_MANAGER_FOLDER_NAME = "cli";
10
+ const ENTITY_MANAGER_FILE_MARK = "em-cli";
11
+ const getParentDirectory = (currentPath) => {
12
+ const parentDirectory = path_1.default.dirname(currentPath);
13
+ if (parentDirectory === currentPath) {
14
+ return "";
15
+ }
16
+ return parentDirectory;
17
+ };
18
+ const discoverCliBasePath = (currentPath = __dirname) => {
19
+ const currentFolder = path_1.default.basename(currentPath);
20
+ if (currentFolder === ENTITY_MANAGER_FOLDER_NAME &&
21
+ fs_1.default.existsSync(path_1.default.join(currentPath, ENTITY_MANAGER_FILE_MARK))) {
22
+ return currentPath;
23
+ }
24
+ const baseDirectory = getParentDirectory(currentPath);
25
+ if (!baseDirectory) {
26
+ throw new Error("Unable to find cli base directory");
27
+ }
28
+ return exports.discoverCliBasePath(baseDirectory);
29
+ };
30
+ exports.discoverCliBasePath = discoverCliBasePath;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9mb2xkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF1QjtBQUN2Qiw0Q0FBbUI7QUFFbkIsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUE7QUFDeEMsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQUE7QUFFekMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFdBQW1CLEVBQVUsRUFBRTtJQUN6RCxNQUFNLGVBQWUsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2pELElBQUksZUFBZSxLQUFLLFdBQVcsRUFBRTtRQUNuQyxPQUFPLEVBQUUsQ0FBQTtLQUNWO0lBQ0QsT0FBTyxlQUFlLENBQUE7QUFDeEIsQ0FBQyxDQUFBO0FBRU0sTUFBTSxtQkFBbUIsR0FBRyxDQUNqQyxjQUFzQixTQUFTLEVBQ3ZCLEVBQUU7SUFDVixNQUFNLGFBQWEsR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hELElBQ0UsYUFBYSxLQUFLLDBCQUEwQjtRQUM1QyxZQUFFLENBQUMsVUFBVSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDLENBQUMsRUFDL0Q7UUFDQSxPQUFPLFdBQVcsQ0FBQTtLQUNuQjtJQUVELE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3JELElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0tBQ3JEO0lBQ0QsT0FBTywyQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUMzQyxDQUFDLENBQUE7QUFoQlksUUFBQSxtQkFBbUIsdUJBZ0IvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBmcyBmcm9tIFwiZnNcIlxuXG5jb25zdCBFTlRJVFlfTUFOQUdFUl9GT0xERVJfTkFNRSA9IFwiY2xpXCJcbmNvbnN0IEVOVElUWV9NQU5BR0VSX0ZJTEVfTUFSSyA9IFwiZW0tY2xpXCJcblxuY29uc3QgZ2V0UGFyZW50RGlyZWN0b3J5ID0gKGN1cnJlbnRQYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBwYXJlbnREaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUoY3VycmVudFBhdGgpXG4gIGlmIChwYXJlbnREaXJlY3RvcnkgPT09IGN1cnJlbnRQYXRoKSB7XG4gICAgcmV0dXJuIFwiXCJcbiAgfVxuICByZXR1cm4gcGFyZW50RGlyZWN0b3J5XG59XG5cbmV4cG9ydCBjb25zdCBkaXNjb3ZlckNsaUJhc2VQYXRoID0gKFxuICBjdXJyZW50UGF0aDogc3RyaW5nID0gX19kaXJuYW1lXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBjdXJyZW50Rm9sZGVyID0gcGF0aC5iYXNlbmFtZShjdXJyZW50UGF0aClcbiAgaWYgKFxuICAgIGN1cnJlbnRGb2xkZXIgPT09IEVOVElUWV9NQU5BR0VSX0ZPTERFUl9OQU1FICYmXG4gICAgZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oY3VycmVudFBhdGgsIEVOVElUWV9NQU5BR0VSX0ZJTEVfTUFSSykpXG4gICkge1xuICAgIHJldHVybiBjdXJyZW50UGF0aFxuICB9XG5cbiAgY29uc3QgYmFzZURpcmVjdG9yeSA9IGdldFBhcmVudERpcmVjdG9yeShjdXJyZW50UGF0aClcbiAgaWYgKCFiYXNlRGlyZWN0b3J5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGZpbmQgY2xpIGJhc2UgZGlyZWN0b3J5XCIpXG4gIH1cbiAgcmV0dXJuIGRpc2NvdmVyQ2xpQmFzZVBhdGgoYmFzZURpcmVjdG9yeSlcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export declare type BuildCommandInput<TContext> = {
2
+ templateFile: string;
3
+ outputFile: string;
4
+ context: TContext;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJ1aWxkQ29tbWFuZElucHV0PFRDb250ZXh0PiA9IHtcbiAgdGVtcGxhdGVGaWxlOiBzdHJpbmdcbiAgb3V0cHV0RmlsZTogc3RyaW5nXG4gIGNvbnRleHQ6IFRDb250ZXh0XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export declare const trimEnd: (value: string, char: string) => string;
2
+ export declare const trimStart: (value: string, char: string) => string;
3
+ export declare const camelToSnakeCase: (str: string) => string;
4
+ export declare const camelToKebabCase: (str: string) => string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.camelToKebabCase = exports.camelToSnakeCase = exports.trimStart = exports.trimEnd = void 0;
4
+ const trimEnd = (value, char) => {
5
+ if (!value.endsWith(char)) {
6
+ return value;
7
+ }
8
+ return exports.trimEnd(value.substring(0, value.length - 1), char);
9
+ };
10
+ exports.trimEnd = trimEnd;
11
+ const trimStart = (value, char) => {
12
+ if (!value.startsWith(char)) {
13
+ return value;
14
+ }
15
+ return exports.trimStart(value.substring(1), char);
16
+ };
17
+ exports.trimStart = trimStart;
18
+ const camelToSnakeCase = (str) => exports.trimStart(str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`), "_");
19
+ exports.camelToSnakeCase = camelToSnakeCase;
20
+ const camelToKebabCase = (str) => exports.trimStart(str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`), "-");
21
+ exports.camelToKebabCase = camelToKebabCase;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFPLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYSxFQUFFLElBQVksRUFBVSxFQUFFO0lBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFFRCxPQUFPLGVBQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQzVELENBQUMsQ0FBQTtBQU5ZLFFBQUEsT0FBTyxXQU1uQjtBQUVNLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLElBQVksRUFBVSxFQUFFO0lBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFFRCxPQUFPLGlCQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUM1QyxDQUFDLENBQUE7QUFOWSxRQUFBLFNBQVMsYUFNckI7QUFFTSxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FDOUMsaUJBQVMsQ0FDUCxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUM3RCxHQUFHLENBQ0osQ0FBQTtBQUpVLFFBQUEsZ0JBQWdCLG9CQUkxQjtBQUVJLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUM5QyxpQkFBUyxDQUNQLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQzdELEdBQUcsQ0FDSixDQUFBO0FBSlUsUUFBQSxnQkFBZ0Isb0JBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRyaW1FbmQgPSAodmFsdWU6IHN0cmluZywgY2hhcjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCF2YWx1ZS5lbmRzV2l0aChjaGFyKSkge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmV0dXJuIHRyaW1FbmQodmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxlbmd0aCAtIDEpLCBjaGFyKVxufVxuXG5leHBvcnQgY29uc3QgdHJpbVN0YXJ0ID0gKHZhbHVlOiBzdHJpbmcsIGNoYXI6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghdmFsdWUuc3RhcnRzV2l0aChjaGFyKSkge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmV0dXJuIHRyaW1TdGFydCh2YWx1ZS5zdWJzdHJpbmcoMSksIGNoYXIpXG59XG5cbmV4cG9ydCBjb25zdCBjYW1lbFRvU25ha2VDYXNlID0gKHN0cjogc3RyaW5nKSA9PlxuICB0cmltU3RhcnQoXG4gICAgc3RyLnJlcGxhY2UoL1tBLVpdL2csIChsZXR0ZXIpID0+IGBfJHtsZXR0ZXIudG9Mb3dlckNhc2UoKX1gKSxcbiAgICBcIl9cIlxuICApXG5cbmV4cG9ydCBjb25zdCBjYW1lbFRvS2ViYWJDYXNlID0gKHN0cjogc3RyaW5nKSA9PlxuICB0cmltU3RhcnQoXG4gICAgc3RyLnJlcGxhY2UoL1tBLVpdL2csIChsZXR0ZXIpID0+IGAtJHtsZXR0ZXIudG9Mb3dlckNhc2UoKX1gKSxcbiAgICBcIi1cIlxuICApXG4iXX0=
package/em-cli ADDED
File without changes
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@punks/cli",
3
+ "version": "0.1.0",
4
+ "bin": {
5
+ "punks": "bin/run.js"
6
+ },
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://gitlab.com/web-punks/entity-manager"
10
+ },
11
+ "publishConfig": {
12
+ "registry": "https://registry.npmjs.org/"
13
+ },
14
+ "scripts": {
15
+ "build": "yarn rimraf dist && tsc",
16
+ "cli": "yarn ts-node ./src/run.ts",
17
+ "test": "jest",
18
+ "deploy:npm": "yarn build && npm publish --access public"
19
+ },
20
+ "devDependencies": {
21
+ "@types/jest": "^29.4.0",
22
+ "@types/node": "^16.4.13",
23
+ "@types/source-map-support": "^0.5.4",
24
+ "@types/yargs": "^17.0.2",
25
+ "jest": "^29.4.1",
26
+ "prettier": "^2.3.2",
27
+ "rimraf": "^4.1.2",
28
+ "ts-creator": "^1.2.5",
29
+ "ts-jest": "^29.0.5",
30
+ "ts-loader": "^9.4.2",
31
+ "ts-node": "^10.9.1",
32
+ "typescript": "4.3.5"
33
+ },
34
+ "dependencies": {
35
+ "dotenv": "^10.0.0",
36
+ "handlebars": "^4.7.7",
37
+ "source-map-support": "^0.5.16",
38
+ "yargs": "^17.1.0"
39
+ },
40
+ "jest": {
41
+ "moduleFileExtensions": [
42
+ "js",
43
+ "json",
44
+ "ts"
45
+ ],
46
+ "moduleNameMapper": {},
47
+ "rootDir": "src",
48
+ "testRegex": ".*\\.spec\\.ts$",
49
+ "transform": {
50
+ "^.+\\.(t|j)s$": "ts-jest"
51
+ },
52
+ "collectCoverageFrom": [
53
+ "**/*.(t|j)s"
54
+ ],
55
+ "coverageDirectory": "../coverage",
56
+ "testEnvironment": "node"
57
+ }
58
+ }
@@ -0,0 +1,49 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render configuration should render configuration 1`] = `
4
+ "using Microsoft.AspNetCore.Routing;
5
+ using Microsoft.Extensions.DependencyInjection;
6
+ using WebPunks.Package.EntityManager;
7
+ using WebPunks.Package.EntityManager.Abstractions;
8
+ using WebPunks.Package.EntityManager.Api;
9
+ using WebPunks.Package.EntityManager.Api.Models;
10
+ using Testing.App.Firestore;
11
+ using namespace.AppUser.Connectors;
12
+ using namespace.AppUser.Converters;
13
+ using namespace.AppUser.Mappers;
14
+ using namespace.AppUser.Models;
15
+ using namespace.AppUser.Search;
16
+
17
+ namespace namespace.AppUser.Configuration;
18
+
19
+ public static class AppUserConfiguration
20
+ {
21
+ public static IServiceCollection AddAppUser(this IServiceCollection services)
22
+ {
23
+ services
24
+ .AddEntityManager()
25
+ .RegisterEntity<AppUser, Guid, AppUserRepository>()
26
+ .MapCreate<AppUser, AppUserCreateInput, AppUserDto, AppUserConverter>()
27
+ .MapUpdate<AppUser, AppUserUpdateInput, AppUserDto, AppUserConverter>()
28
+ .MapDelete<AppUser, Guid>()
29
+ .MapGet<AppUser, Guid, AppUserDto, AppUserConverter>()
30
+ .MapSearch<AppUser, AppUserDto, AppUserSearchParameters, AppUserSortBy, int, AppUserSearchResultFacets, AppUserConverter, AppUserQueryBuilder>()
31
+ .WithSynchronization<AppUser, , AppUserFirebaseMapper, AppUserFirebaseConnector>("firestore", new ConnectorOptions
32
+ {
33
+ Enabled = true,
34
+ Mode = ConnectorMode.Sync,
35
+ });
36
+ return services;
37
+ }
38
+
39
+ public static void UseAppUserApi(this IEndpointRouteBuilder app)
40
+ {
41
+ app.UseEntityApi<AppUser, Guid, AppUserDto, AppUserListItemDto, AppUserCreateInput, AppUserUpdateInput,
42
+ AppUserSearchParameters, AppUserSortBy, int, AppUserSearchResultFacets>(new EntityApiOptions
43
+ {
44
+ Path = "app-user",
45
+ });
46
+ }
47
+ }
48
+ "
49
+ `;
@@ -0,0 +1,53 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render converter should render converter 1`] = `
4
+ "using WebPunks.Package.EntityManager.Abstractions;
5
+ using namespace.AppUser.Models;
6
+
7
+ namespace namespace.AppUser.Converters;
8
+
9
+ public class AppUserConverter :
10
+ IEntityCreateConverter<AppUser, AppUserCreateInput, AppUserDto>,
11
+ IEntityUpdateConverter<AppUser, AppUserUpdateInput, AppUserDto>,
12
+ IEntityGetConverter<AppUser, AppUserDto>,
13
+ IEntitiesSearchConverter<AppUser, AppUserDto>
14
+ {
15
+ private readonly DefaultMapper _mapper;
16
+
17
+ public AppUserConverter(DefaultMapper mapper)
18
+ {
19
+ _mapper = mapper;
20
+ }
21
+
22
+ public AppUser ToEntity(AppUserCreateInput input)
23
+ {
24
+ return _mapper.Map<AppUser>(input);
25
+ }
26
+
27
+ AppUserDto IEntityCreateActionConverter<AppUser, AppUserDto>.ToEntityDto(AppUser entity)
28
+ {
29
+ return _mapper.Map<AppUserDto>(entity);
30
+ }
31
+
32
+ public AppUser ToEntity(AppUserUpdateInput input)
33
+ {
34
+ return _mapper.Map<AppUser>(input);
35
+ }
36
+
37
+ AppUserDto IEntityUpdateActionConverter<AppUser, AppUserDto>.ToEntityDto(AppUser entity)
38
+ {
39
+ return _mapper.Map<AppUserDto>(entity);
40
+ }
41
+
42
+ AppUserDto IEntityGetConverter<AppUser, AppUserDto>.ToEntityDto(AppUser entity)
43
+ {
44
+ return _mapper.Map<AppUserDto>(entity);
45
+ }
46
+
47
+ public AppUserDto ToListItemDto(AppUser entity)
48
+ {
49
+ return _mapper.Map<AppUserDto>(entity);
50
+ }
51
+ }
52
+ "
53
+ `;
@@ -0,0 +1,20 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render firestore connector should render model firestore connector 1`] = `
4
+ "using WebPunks.Package.EntityManager.Providers.Firestore;
5
+ using Testing.App.Firestore;
6
+
7
+ namespace namespace.AppUser.Connectors;
8
+
9
+ public class AppUserFirebaseConnector : FirestoreConnector<AppUser, , Guid>
10
+ {
11
+ public AppUserFirebaseConnector(AppFirestoreDb db) : base(db.Instance, "AppUser")
12
+ {}
13
+
14
+ protected override Guid GetId( entity)
15
+ {
16
+ return entity.Id;
17
+ }
18
+ }
19
+ "
20
+ `;
@@ -0,0 +1,29 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render firestore mapper should render model firestore mapper 1`] = `
4
+ "using Microsoft.EntityFrameworkCore;
5
+ using Testing.App.Firestore;
6
+
7
+ namespace namespace.AppUser.Mappers;
8
+
9
+ public class AppUserFirebaseMapper : IEntityMapper<AppUser, >
10
+ {
11
+ private readonly DefaultMapper _mapper;
12
+ private readonly CoreDbContext _context;
13
+
14
+ public FirebaseFeedPostMapper(DefaultMapper mapper, CoreDbContext context)
15
+ {
16
+ _mapper = mapper;
17
+ _context = context;
18
+ }
19
+
20
+ public async Task<> MapEntity(AppUser entity)
21
+ {
22
+ var post = await _context.AppUsers
23
+ .AsNoTracking()
24
+ .SingleAsync(x => x.Id == entity.Id);
25
+
26
+ return _mapper.Map<>(post);
27
+ }
28
+ }"
29
+ `;
@@ -0,0 +1,10 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render model create should render model create 1`] = `
4
+ "namespace namespace.AppUser.Models;
5
+
6
+ public class AppUserCreateInput
7
+ {
8
+
9
+ }"
10
+ `;
@@ -0,0 +1,10 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render model dto should render model dto 1`] = `
4
+ "namespace namespace.AppUser.Models;
5
+
6
+ public class AppUserDto : AppUserListItemDto
7
+ {
8
+
9
+ }"
10
+ `;
@@ -0,0 +1,13 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render model list item dto should render model list item dto 1`] = `
4
+ "using namespace.AppUser.Contents;
5
+
6
+ namespace namespace.AppUser.Models;
7
+
8
+ public class AppUserListItemDto
9
+ {
10
+ public Guid Id { get; set; }
11
+ }
12
+ "
13
+ `;
@@ -0,0 +1,11 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render model update should render model list update 1`] = `
4
+ "namespace namespace.AppUser.Models;
5
+
6
+ public class AppUserUpdateInput
7
+ {
8
+ public Guid Id { get; set; }
9
+ }
10
+ "
11
+ `;
@@ -0,0 +1,30 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render search parameters should render model search parameters 1`] = `
4
+ "using namespace.AppUser.Models;
5
+
6
+ namespace namespace.AppUser.Search;
7
+
8
+ public enum AppUserSortBy
9
+ {
10
+ Created
11
+ }
12
+
13
+ public class AppUserSearchResultFacets
14
+ {
15
+ }
16
+
17
+ public class AppUserSearchFilters : EntitySearchFilters
18
+ {
19
+ public string Query { get; set; }
20
+ }
21
+
22
+ public class AppUserSearchOptions : EntitySearchOptions
23
+ {}
24
+
25
+ public class AppUserSearchParameters : EntitySearchParameters<AppUserSortBy, int, AppUserSearchFilters, AppUserSearchOptions>
26
+ {
27
+ }
28
+
29
+ "
30
+ `;
@@ -0,0 +1,42 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`it should render search query should render model search query 1`] = `
4
+ "using Microsoft.EntityFrameworkCore;
5
+ using WebPunks.Package.EntityManager.Providers.EntityFramework;
6
+
7
+ namespace namespace.AppUser.Search;
8
+
9
+ public class AppUserQueryBuilder : EntityFrameworkQueryBuilder<
10
+ CoreDbContext,
11
+ AppUserSearchParameters,
12
+ AppUser,
13
+ AppUserSortBy,
14
+ AppUserSearchResultFacets>
15
+ {
16
+ public AppUserQueryBuilder(IDbContextFactory<CoreDbContext> contextFactory) : base(
17
+ contextFactory,
18
+ x => x.AppUsers)
19
+ {
20
+ }
21
+
22
+ protected override IQueryable<AppUser> ApplySorting(IQueryable<AppUser> query, AppUserSearchParameters searchParameters)
23
+ {
24
+ throw new NotImplementedException();
25
+ }
26
+
27
+ protected override Func<DbSet<AppUser>, IQueryable<AppUser>> GetBaseQueryBuilder()
28
+ {
29
+ throw new NotImplementedException();
30
+ }
31
+
32
+ protected override IQueryable<AppUser> ApplySearchFilters(IQueryable<AppUser> query, AppUserSearchParameters searchParameters)
33
+ {
34
+ throw new NotImplementedException();
35
+ }
36
+
37
+ protected override Func<IQueryable<AppUser>, Task<AppUserSearchResultFacets>> GetFacetsBuilder()
38
+ {
39
+ throw new NotImplementedException();
40
+ }
41
+ }"
42
+ `;
@@ -0,0 +1,48 @@
1
+ using Microsoft.AspNetCore.Routing;
2
+ using Microsoft.Extensions.DependencyInjection;
3
+ using WebPunks.Package.EntityManager;
4
+ using WebPunks.Package.EntityManager.Abstractions;
5
+ using WebPunks.Package.EntityManager.Api;
6
+ using WebPunks.Package.EntityManager.Api.Models;
7
+ {{#if configureFirestoreConnector}}
8
+ using {{ firestoreDocumentNamespace }};
9
+ {{/if}}
10
+ using {{ namespace }}.{{ entityName }}.Connectors;
11
+ using {{ namespace }}.{{ entityName }}.Converters;
12
+ using {{ namespace }}.{{ entityName }}.Mappers;
13
+ using {{ namespace }}.{{ entityName }}.Models;
14
+ using {{ namespace }}.{{ entityName }}.Search;
15
+
16
+ namespace {{ namespace }}.{{ entityName }}.Configuration;
17
+
18
+ public static class {{ entityName }}Configuration
19
+ {
20
+ public static IServiceCollection Add{{ entityName }}(this IServiceCollection services)
21
+ {
22
+ services
23
+ .AddEntityManager()
24
+ .RegisterEntity<{{ entityName }}, Guid, {{ entityName }}Repository>()
25
+ .MapCreate<{{ entityName }}, {{ entityName }}CreateInput, {{ entityName }}Dto, {{ entityName }}Converter>()
26
+ .MapUpdate<{{ entityName }}, {{ entityName }}UpdateInput, {{ entityName }}Dto, {{ entityName }}Converter>()
27
+ .MapDelete<{{ entityName }}, Guid>()
28
+ .MapGet<{{ entityName }}, Guid, {{ entityName }}Dto, {{ entityName }}Converter>()
29
+ .MapSearch<{{ entityName }}, {{ entityName }}Dto, {{ entityName }}SearchParameters, {{ entityName }}SortBy, int, {{ entityName }}SearchResultFacets, {{ entityName }}Converter, {{ entityName }}QueryBuilder>()
30
+ {{#if configureFirestoreConnector}}
31
+ .WithSynchronization<{{ entityName }}, {{ firestoreDocumentType }}, {{ entityName }}FirebaseMapper, {{ entityName }}FirebaseConnector>("firestore", new ConnectorOptions
32
+ {
33
+ Enabled = true,
34
+ Mode = ConnectorMode.Sync,
35
+ });
36
+ {{/if}}
37
+ return services;
38
+ }
39
+
40
+ public static void Use{{ entityName }}Api(this IEndpointRouteBuilder app)
41
+ {
42
+ app.UseEntityApi<{{ entityName }}, Guid, {{ entityName }}Dto, {{ entityName }}ListItemDto, {{ entityName }}CreateInput, {{ entityName }}UpdateInput,
43
+ {{ entityName }}SearchParameters, {{ entityName }}SortBy, int, {{ entityName }}SearchResultFacets>(new EntityApiOptions
44
+ {
45
+ Path = "{{ endpointPath }}",
46
+ });
47
+ }
48
+ }
@@ -0,0 +1,15 @@
1
+ using WebPunks.Package.EntityManager.Providers.Firestore;
2
+ using {{ firestoreDocumentNamespace }};
3
+
4
+ namespace {{ namespace }}.{{ entityName }}.Connectors;
5
+
6
+ public class {{ entityName }}FirebaseConnector : FirestoreConnector<{{ entityName }}, {{ firestoreDocumentType }}, Guid>
7
+ {
8
+ public {{ entityName }}FirebaseConnector(AppFirestoreDb db) : base(db.Instance, "{{ entityName }}")
9
+ {}
10
+
11
+ protected override Guid GetId({{ firestoreDocumentType }} entity)
12
+ {
13
+ return entity.Id;
14
+ }
15
+ }
@@ -0,0 +1,48 @@
1
+ using WebPunks.Package.EntityManager.Abstractions;
2
+ using {{ namespace }}.{{ entityName }}.Models;
3
+
4
+ namespace {{ namespace }}.{{ entityName }}.Converters;
5
+
6
+ public class {{ entityName }}Converter :
7
+ IEntityCreateConverter<{{ entityName }}, {{ entityName }}CreateInput, {{ entityName }}Dto>,
8
+ IEntityUpdateConverter<{{ entityName }}, {{ entityName }}UpdateInput, {{ entityName }}Dto>,
9
+ IEntityGetConverter<{{ entityName }}, {{ entityName }}Dto>,
10
+ IEntitiesSearchConverter<{{ entityName }}, {{ entityName }}Dto>
11
+ {
12
+ private readonly DefaultMapper _mapper;
13
+
14
+ public {{ entityName }}Converter(DefaultMapper mapper)
15
+ {
16
+ _mapper = mapper;
17
+ }
18
+
19
+ public {{ entityName }} ToEntity({{ entityName }}CreateInput input)
20
+ {
21
+ return _mapper.Map<{{ entityName }}>(input);
22
+ }
23
+
24
+ {{ entityName }}Dto IEntityCreateActionConverter<{{ entityName }}, {{ entityName }}Dto>.ToEntityDto({{ entityName }} entity)
25
+ {
26
+ return _mapper.Map<{{ entityName }}Dto>(entity);
27
+ }
28
+
29
+ public {{ entityName }} ToEntity({{ entityName }}UpdateInput input)
30
+ {
31
+ return _mapper.Map<{{ entityName }}>(input);
32
+ }
33
+
34
+ {{ entityName }}Dto IEntityUpdateActionConverter<{{ entityName }}, {{ entityName }}Dto>.ToEntityDto({{ entityName }} entity)
35
+ {
36
+ return _mapper.Map<{{ entityName }}Dto>(entity);
37
+ }
38
+
39
+ {{ entityName }}Dto IEntityGetConverter<{{ entityName }}, {{ entityName }}Dto>.ToEntityDto({{ entityName }} entity)
40
+ {
41
+ return _mapper.Map<{{ entityName }}Dto>(entity);
42
+ }
43
+
44
+ public {{ entityName }}Dto ToListItemDto({{ entityName }} entity)
45
+ {
46
+ return _mapper.Map<{{ entityName }}Dto>(entity);
47
+ }
48
+ }
@@ -0,0 +1,25 @@
1
+ using Microsoft.EntityFrameworkCore;
2
+ using {{ firestoreDocumentNamespace }};
3
+
4
+ namespace {{ namespace }}.{{ entityName }}.Mappers;
5
+
6
+ public class {{ entityName }}FirebaseMapper : IEntityMapper<{{ entityName }}, {{ firestoreDocumentType }}>
7
+ {
8
+ private readonly DefaultMapper _mapper;
9
+ private readonly CoreDbContext _context;
10
+
11
+ public FirebaseFeedPostMapper(DefaultMapper mapper, CoreDbContext context)
12
+ {
13
+ _mapper = mapper;
14
+ _context = context;
15
+ }
16
+
17
+ public async Task<{{ firestoreDocumentType }}> MapEntity({{ entityName }} entity)
18
+ {
19
+ var post = await _context.{{ entityName }}s
20
+ .AsNoTracking()
21
+ .SingleAsync(x => x.Id == entity.Id);
22
+
23
+ return _mapper.Map<{{ firestoreDocumentType }}>(post);
24
+ }
25
+ }
@@ -0,0 +1,6 @@
1
+ namespace {{ namespace }}.{{ entityName }}.Models;
2
+
3
+ public class {{ entityName }}CreateInput
4
+ {
5
+
6
+ }
@@ -0,0 +1,6 @@
1
+ namespace {{ namespace }}.{{ entityName }}.Models;
2
+
3
+ public class {{ entityName }}Dto : {{ entityName }}ListItemDto
4
+ {
5
+
6
+ }
@@ -0,0 +1,8 @@
1
+ using {{ namespace }}.{{ entityName }}.Contents;
2
+
3
+ namespace {{ namespace }}.{{ entityName }}.Models;
4
+
5
+ public class {{ entityName }}ListItemDto
6
+ {
7
+ public Guid Id { get; set; }
8
+ }