@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.
- package/.eslintignore +4 -0
- package/.eslintrc +127 -0
- package/.prettierignore +4 -0
- package/.prettierrc +7 -0
- package/dist/abstractions/builder.d.ts +4 -0
- package/dist/abstractions/builder.js +7 -0
- package/dist/builders/dotnet/base.d.ts +16 -0
- package/dist/builders/dotnet/base.js +43 -0
- package/dist/builders/dotnet/entity-configuration/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-configuration/index.js +27 -0
- package/dist/builders/dotnet/entity-converter/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-converter/index.js +27 -0
- package/dist/builders/dotnet/entity-model-create/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-model-create/index.js +27 -0
- package/dist/builders/dotnet/entity-model-dto/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-model-dto/index.js +27 -0
- package/dist/builders/dotnet/entity-model-list-item-dto/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-model-list-item-dto/index.js +27 -0
- package/dist/builders/dotnet/entity-model-update/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-model-update/index.js +27 -0
- package/dist/builders/dotnet/entity-search-parameters/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-search-parameters/index.js +27 -0
- package/dist/builders/dotnet/entity-search-query-builder/index.d.ts +8 -0
- package/dist/builders/dotnet/entity-search-query-builder/index.js +27 -0
- package/dist/builders/dotnet/firestore-connector/index.d.ts +8 -0
- package/dist/builders/dotnet/firestore-connector/index.js +27 -0
- package/dist/builders/dotnet/firestore-mapper/index.d.ts +8 -0
- package/dist/builders/dotnet/firestore-mapper/index.js +27 -0
- package/dist/builders/dotnet/types.d.ts +9 -0
- package/dist/builders/dotnet/types.js +3 -0
- package/dist/commands/entity-add/__test__/dotnet/common.d.ts +2 -0
- package/dist/commands/entity-add/__test__/dotnet/common.js +11 -0
- package/dist/commands/entity-add/__test__/dotnet/render.configuration.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.configuration.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.converter.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.converter.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-create.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-create.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-dto.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-dto.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-update.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.model-update.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.search-parameters.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.search-parameters.spec.js +21 -0
- package/dist/commands/entity-add/__test__/dotnet/render.search-query.spec.d.ts +1 -0
- package/dist/commands/entity-add/__test__/dotnet/render.search-query.spec.js +21 -0
- package/dist/commands/entity-add/index.d.ts +25 -0
- package/dist/commands/entity-add/index.js +44 -0
- package/dist/logging/index.d.ts +8 -0
- package/dist/logging/index.js +28 -0
- package/dist/providers/rendering/base.d.ts +3 -0
- package/dist/providers/rendering/base.js +7 -0
- package/dist/providers/rendering/factory.d.ts +5 -0
- package/dist/providers/rendering/factory.js +16 -0
- package/dist/providers/rendering/handlebars.d.ts +4 -0
- package/dist/providers/rendering/handlebars.js +16 -0
- package/dist/renderer/index.d.ts +6 -0
- package/dist/renderer/index.js +28 -0
- package/dist/run.d.ts +2 -0
- package/dist/run.js +65 -0
- package/dist/services/folders.d.ts +1 -0
- package/dist/services/folders.js +31 -0
- package/dist/types/commands.d.ts +5 -0
- package/dist/types/commands.js +3 -0
- package/dist/utils/strings.d.ts +4 -0
- package/dist/utils/strings.js +22 -0
- package/em-cli +0 -0
- package/package.json +58 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.configuration.spec.ts.snap +49 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.converter.spec.ts.snap +53 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-connector.spec.ts.snap +20 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-mapper.spec.ts.snap +29 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-create.spec.ts.snap +10 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-dto.spec.ts.snap +10 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-list-item-dto.spec.ts.snap +13 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-update.spec.ts.snap +11 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-parameters.spec.ts.snap +30 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-query.spec.ts.snap +42 -0
- package/templates/dotnet/NewEntity/Configuration/<Entity>Configuration.cs.template +48 -0
- package/templates/dotnet/NewEntity/Connectors/<Entity>FirestoreConnector.cs.template +15 -0
- package/templates/dotnet/NewEntity/Converters/<Entity>Converter.cs.template +48 -0
- package/templates/dotnet/NewEntity/Mappers/<Entity>FirestoreMapper.cs.template +25 -0
- package/templates/dotnet/NewEntity/Models/<Entity>CreateInput.cs.template +6 -0
- package/templates/dotnet/NewEntity/Models/<Entity>Dto.cs.template +6 -0
- package/templates/dotnet/NewEntity/Models/<Entity>ListItemDto.cs.template +8 -0
- package/templates/dotnet/NewEntity/Models/<Entity>UpdateInput.cs.template +6 -0
- package/templates/dotnet/NewEntity/Search/<Entity>QueryBuilder.cs.template +38 -0
- package/templates/dotnet/NewEntity/Search/<Entity>SearchParameters.cs.template +25 -0
- 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,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
|
+
}
|
package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.configuration.spec.ts.snap
ADDED
|
@@ -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
|
+
`;
|
package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-mapper.spec.ts.snap
ADDED
|
@@ -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,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
|
+
`;
|
package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-parameters.spec.ts.snap
ADDED
|
@@ -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
|
+
`;
|
package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-query.spec.ts.snap
ADDED
|
@@ -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
|
+
}
|