@things-factory/auth-base 9.0.0-beta.8 → 9.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/config.development.js +1 -0
- package/dist-client/auth.js +2 -7
- package/dist-client/auth.js.map +1 -1
- package/dist-client/reducers/auth.js +9 -2
- package/dist-client/reducers/auth.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/change-pwd.js +5 -2
- package/dist-server/controllers/change-pwd.js.map +1 -1
- package/dist-server/controllers/checkin.js +1 -1
- package/dist-server/controllers/checkin.js.map +1 -1
- package/dist-server/controllers/delete-user.js +2 -2
- package/dist-server/controllers/delete-user.js.map +1 -1
- package/dist-server/controllers/profile.js +4 -1
- package/dist-server/controllers/profile.js.map +1 -1
- package/dist-server/controllers/reset-password.js +5 -2
- package/dist-server/controllers/reset-password.js.map +1 -1
- package/dist-server/controllers/signin.js +2 -2
- package/dist-server/controllers/signin.js.map +1 -1
- package/dist-server/controllers/signup.js +8 -1
- package/dist-server/controllers/signup.js.map +1 -1
- package/dist-server/errors/auth-error.js +3 -1
- package/dist-server/errors/auth-error.js.map +1 -1
- package/dist-server/middlewares/authenticate-401-middleware.js +22 -9
- package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
- package/dist-server/middlewares/bypass-signin-middleware.d.ts +1 -0
- package/dist-server/middlewares/bypass-signin-middleware.js +20 -0
- package/dist-server/middlewares/bypass-signin-middleware.js.map +1 -0
- package/dist-server/middlewares/domain-authenticate-middleware.js +1 -5
- package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/index.js +6 -1
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/middlewares/jwt-authenticate-middleware.js +1 -1
- package/dist-server/middlewares/jwt-authenticate-middleware.js.map +1 -1
- package/dist-server/migrations/1548206416130-SeedUser.js +11 -3
- package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -1
- package/dist-server/router/auth-checkin-router.js +11 -13
- package/dist-server/router/auth-checkin-router.js.map +1 -1
- package/dist-server/router/auth-private-process-router.js +10 -4
- package/dist-server/router/auth-private-process-router.js.map +1 -1
- package/dist-server/router/auth-signup-router.js +5 -2
- package/dist-server/router/auth-signup-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-authorize-router.js +5 -2
- package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-router.js +1 -2
- package/dist-server/router/oauth2/oauth2-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-server.js +21 -3
- package/dist-server/router/oauth2/oauth2-server.js.map +1 -1
- package/dist-server/router/site-root-router.js +1 -1
- package/dist-server/router/site-root-router.js.map +1 -1
- package/dist-server/router/webauthn-router.js +1 -1
- package/dist-server/router/webauthn-router.js.map +1 -1
- package/dist-server/routes.js +74 -48
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-types.js +3 -3
- package/dist-server/service/app-binding/app-binding-types.js.map +1 -1
- package/dist-server/service/app-binding/app-binding.js +6 -4
- package/dist-server/service/app-binding/app-binding.js.map +1 -1
- package/dist-server/service/appliance/appliance-mutation.js +37 -34
- package/dist-server/service/appliance/appliance-mutation.js.map +1 -1
- package/dist-server/service/appliance/appliance-types.js +18 -18
- package/dist-server/service/appliance/appliance-types.js.map +1 -1
- package/dist-server/service/appliance/appliance.d.ts +2 -0
- package/dist-server/service/appliance/appliance.js +61 -14
- package/dist-server/service/appliance/appliance.js.map +1 -1
- package/dist-server/service/application/application-mutation.js +22 -4
- package/dist-server/service/application/application-mutation.js.map +1 -1
- package/dist-server/service/application/application-types.js +24 -24
- package/dist-server/service/application/application-types.js.map +1 -1
- package/dist-server/service/application/application.d.ts +6 -6
- package/dist-server/service/application/application.js +22 -22
- package/dist-server/service/application/application.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-mutation.js +29 -7
- package/dist-server/service/auth-provider/auth-provider-mutation.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-parameter-spec.js +12 -7
- package/dist-server/service/auth-provider/auth-provider-parameter-spec.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-type.js +24 -21
- package/dist-server/service/auth-provider/auth-provider-type.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider.js +35 -25
- package/dist-server/service/auth-provider/auth-provider.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-mutation.js +1 -2
- package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-types.js +17 -14
- package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -1
- package/dist-server/service/domain-link/domain-link-mutation.d.ts +9 -0
- package/dist-server/service/domain-link/domain-link-mutation.js +133 -0
- package/dist-server/service/domain-link/domain-link-mutation.js.map +1 -0
- package/dist-server/service/domain-link/domain-link-query.d.ts +11 -0
- package/dist-server/service/domain-link/domain-link-query.js +75 -0
- package/dist-server/service/domain-link/domain-link-query.js.map +1 -0
- package/dist-server/service/domain-link/domain-link-types.d.ts +18 -0
- package/dist-server/service/domain-link/domain-link-types.js +66 -0
- package/dist-server/service/domain-link/domain-link-types.js.map +1 -0
- package/dist-server/service/domain-link/domain-link.d.ts +28 -0
- package/dist-server/service/domain-link/domain-link.js +105 -0
- package/dist-server/service/domain-link/domain-link.js.map +1 -0
- package/dist-server/service/domain-link/index.d.ts +6 -0
- package/dist-server/service/domain-link/index.js +10 -0
- package/dist-server/service/domain-link/index.js.map +1 -0
- package/dist-server/service/granted-role/granted-role-mutation.js +7 -7
- package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -1
- package/dist-server/service/granted-role/granted-role.js +4 -4
- package/dist-server/service/granted-role/granted-role.js.map +1 -1
- package/dist-server/service/index.d.ts +3 -1
- package/dist-server/service/index.js +7 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/invitation/invitation-mutation.js +6 -2
- package/dist-server/service/invitation/invitation-mutation.js.map +1 -1
- package/dist-server/service/invitation/invitation-types.js +3 -3
- package/dist-server/service/invitation/invitation-types.js.map +1 -1
- package/dist-server/service/invitation/invitation.js +10 -10
- package/dist-server/service/invitation/invitation.js.map +1 -1
- package/dist-server/service/login-history/login-history-type.js +3 -3
- package/dist-server/service/login-history/login-history-type.js.map +1 -1
- package/dist-server/service/login-history/login-history.js +6 -6
- package/dist-server/service/login-history/login-history.js.map +1 -1
- package/dist-server/service/partner/partner-types.js +3 -3
- package/dist-server/service/partner/partner-types.js.map +1 -1
- package/dist-server/service/partner/partner.js +8 -8
- package/dist-server/service/partner/partner.js.map +1 -1
- package/dist-server/service/password-history/password-history.js +3 -3
- package/dist-server/service/password-history/password-history.js.map +1 -1
- package/dist-server/service/privilege/privilege-directive.js +1 -2
- package/dist-server/service/privilege/privilege-directive.js.map +1 -1
- package/dist-server/service/privilege/privilege-mutation.js +11 -2
- package/dist-server/service/privilege/privilege-mutation.js.map +1 -1
- package/dist-server/service/privilege/privilege.js +20 -20
- package/dist-server/service/privilege/privilege.js.map +1 -1
- package/dist-server/service/role/role-mutation.js +12 -2
- package/dist-server/service/role/role-mutation.js.map +1 -1
- package/dist-server/service/role/role-query.d.ts +7 -3
- package/dist-server/service/role/role-query.js +18 -10
- package/dist-server/service/role/role-query.js.map +1 -1
- package/dist-server/service/role/role-types.d.ts +4 -0
- package/dist-server/service/role/role-types.js +41 -27
- package/dist-server/service/role/role-types.js.map +1 -1
- package/dist-server/service/role/role.js +11 -11
- package/dist-server/service/role/role.js.map +1 -1
- package/dist-server/service/user/user-mutation.js +89 -41
- package/dist-server/service/user/user-mutation.js.map +1 -1
- package/dist-server/service/user/user-query.d.ts +1 -0
- package/dist-server/service/user/user-query.js +25 -9
- package/dist-server/service/user/user-query.js.map +1 -1
- package/dist-server/service/user/user-types.js +35 -32
- package/dist-server/service/user/user-types.js.map +1 -1
- package/dist-server/service/user/user.d.ts +5 -5
- package/dist-server/service/user/user.js +30 -22
- package/dist-server/service/user/user.js.map +1 -1
- package/dist-server/service/users-auth-providers/users-auth-providers.js +11 -8
- package/dist-server/service/users-auth-providers/users-auth-providers.js.map +1 -1
- package/dist-server/service/verification-token/verification-token.d.ts +3 -3
- package/dist-server/service/verification-token/verification-token.js +8 -8
- package/dist-server/service/verification-token/verification-token.js.map +1 -1
- package/dist-server/service/web-auth-credential/web-auth-credential.js +11 -10
- package/dist-server/service/web-auth-credential/web-auth-credential.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/access-token-cookie.js +1 -11
- package/dist-server/utils/access-token-cookie.js.map +1 -1
- package/dist-server/utils/check-user-belongs-domain.js +1 -2
- package/dist-server/utils/check-user-belongs-domain.js.map +1 -1
- package/dist-server/utils/get-domain-users.js +2 -2
- package/dist-server/utils/get-domain-users.js.map +1 -1
- package/dist-server/utils/get-user-domains.d.ts +0 -1
- package/dist-server/utils/get-user-domains.js +28 -22
- package/dist-server/utils/get-user-domains.js.map +1 -1
- package/package.json +6 -6
- package/dist-server/utils/get-domain-from-hostname.d.ts +0 -1
- package/dist-server/utils/get-domain-from-hostname.js +0 -9
- package/dist-server/utils/get-domain-from-hostname.js.map +0 -1
@@ -0,0 +1,133 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DomainLinkMutation = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
6
|
+
const typeorm_1 = require("typeorm");
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
8
|
+
const domain_link_js_1 = require("./domain-link.js");
|
9
|
+
const domain_link_types_js_1 = require("./domain-link-types.js");
|
10
|
+
let DomainLinkMutation = class DomainLinkMutation {
|
11
|
+
async createDomainLink(domainLink, context) {
|
12
|
+
const { user, tx } = context.state;
|
13
|
+
const result = await (0, shell_1.getRepository)(domain_link_js_1.DomainLink, tx).save({
|
14
|
+
...domainLink,
|
15
|
+
creator: user,
|
16
|
+
updater: user
|
17
|
+
});
|
18
|
+
return result;
|
19
|
+
}
|
20
|
+
async updateDomainLink(id, patch, context) {
|
21
|
+
const { domain, user, tx } = context.state;
|
22
|
+
const repository = (0, shell_1.getRepository)(domain_link_js_1.DomainLink, tx);
|
23
|
+
const domainLink = await repository.findOne({
|
24
|
+
where: { id }
|
25
|
+
});
|
26
|
+
const result = await repository.save({
|
27
|
+
...domainLink,
|
28
|
+
...patch,
|
29
|
+
updater: user
|
30
|
+
});
|
31
|
+
return result;
|
32
|
+
}
|
33
|
+
async updateMultipleDomainLink(patches, context) {
|
34
|
+
const { domain, user, tx } = context.state;
|
35
|
+
let results = [];
|
36
|
+
const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
|
37
|
+
const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
|
38
|
+
const domainLinkRepo = (0, shell_1.getRepository)(domain_link_js_1.DomainLink, tx);
|
39
|
+
if (_createRecords.length > 0) {
|
40
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
41
|
+
const newRecord = _createRecords[i];
|
42
|
+
const result = await domainLinkRepo.save({
|
43
|
+
...newRecord,
|
44
|
+
domain,
|
45
|
+
creator: user,
|
46
|
+
updater: user
|
47
|
+
});
|
48
|
+
results.push({ ...result, cuFlag: '+' });
|
49
|
+
}
|
50
|
+
}
|
51
|
+
if (_updateRecords.length > 0) {
|
52
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
53
|
+
const updateRecord = _updateRecords[i];
|
54
|
+
const domainLink = await domainLinkRepo.findOneBy({ id: updateRecord.id });
|
55
|
+
const result = await domainLinkRepo.save({
|
56
|
+
...domainLink,
|
57
|
+
...updateRecord,
|
58
|
+
updater: user
|
59
|
+
});
|
60
|
+
results.push({ ...result, cuFlag: 'M' });
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return results;
|
64
|
+
}
|
65
|
+
async deleteDomainLink(id, context) {
|
66
|
+
const { domain, tx } = context.state;
|
67
|
+
await (0, shell_1.getRepository)(domain_link_js_1.DomainLink, tx).delete({ id });
|
68
|
+
return true;
|
69
|
+
}
|
70
|
+
async deleteDomainLinks(ids, context) {
|
71
|
+
const { domain, tx } = context.state;
|
72
|
+
await (0, shell_1.getRepository)(domain_link_js_1.DomainLink, tx).delete({
|
73
|
+
id: (0, typeorm_1.In)(ids)
|
74
|
+
});
|
75
|
+
return true;
|
76
|
+
}
|
77
|
+
};
|
78
|
+
exports.DomainLinkMutation = DomainLinkMutation;
|
79
|
+
tslib_1.__decorate([
|
80
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
81
|
+
(0, type_graphql_1.Directive)('@privilege(superUserGranted: true)'),
|
82
|
+
(0, type_graphql_1.Mutation)(returns => domain_link_js_1.DomainLink, { description: 'To create new DomainLink' }),
|
83
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('domainLink')),
|
84
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
85
|
+
tslib_1.__metadata("design:type", Function),
|
86
|
+
tslib_1.__metadata("design:paramtypes", [domain_link_types_js_1.NewDomainLink, Object]),
|
87
|
+
tslib_1.__metadata("design:returntype", Promise)
|
88
|
+
], DomainLinkMutation.prototype, "createDomainLink", null);
|
89
|
+
tslib_1.__decorate([
|
90
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
91
|
+
(0, type_graphql_1.Directive)('@privilege(superUserGranted: true)'),
|
92
|
+
(0, type_graphql_1.Mutation)(returns => domain_link_js_1.DomainLink, { description: 'To modify DomainLink information' }),
|
93
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
94
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
|
95
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
96
|
+
tslib_1.__metadata("design:type", Function),
|
97
|
+
tslib_1.__metadata("design:paramtypes", [String, domain_link_types_js_1.DomainLinkPatch, Object]),
|
98
|
+
tslib_1.__metadata("design:returntype", Promise)
|
99
|
+
], DomainLinkMutation.prototype, "updateDomainLink", null);
|
100
|
+
tslib_1.__decorate([
|
101
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
102
|
+
(0, type_graphql_1.Directive)('@privilege(superUserGranted: true)'),
|
103
|
+
(0, type_graphql_1.Mutation)(returns => [domain_link_js_1.DomainLink], { description: "To modify multiple DomainLinks' information" }),
|
104
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [domain_link_types_js_1.DomainLinkPatch])),
|
105
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
106
|
+
tslib_1.__metadata("design:type", Function),
|
107
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
108
|
+
tslib_1.__metadata("design:returntype", Promise)
|
109
|
+
], DomainLinkMutation.prototype, "updateMultipleDomainLink", null);
|
110
|
+
tslib_1.__decorate([
|
111
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
112
|
+
(0, type_graphql_1.Directive)('@privilege(superUserGranted: true)'),
|
113
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete DomainLink' }),
|
114
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
115
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
116
|
+
tslib_1.__metadata("design:type", Function),
|
117
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
118
|
+
tslib_1.__metadata("design:returntype", Promise)
|
119
|
+
], DomainLinkMutation.prototype, "deleteDomainLink", null);
|
120
|
+
tslib_1.__decorate([
|
121
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
122
|
+
(0, type_graphql_1.Directive)('@privilege(superUserGranted: true)'),
|
123
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete multiple DomainLinks' }),
|
124
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
|
125
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
126
|
+
tslib_1.__metadata("design:type", Function),
|
127
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
128
|
+
tslib_1.__metadata("design:returntype", Promise)
|
129
|
+
], DomainLinkMutation.prototype, "deleteDomainLinks", null);
|
130
|
+
exports.DomainLinkMutation = DomainLinkMutation = tslib_1.__decorate([
|
131
|
+
(0, type_graphql_1.Resolver)(domain_link_js_1.DomainLink)
|
132
|
+
], DomainLinkMutation);
|
133
|
+
//# sourceMappingURL=domain-link-mutation.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"domain-link-mutation.js","sourceRoot":"","sources":["../../../server/service/domain-link/domain-link-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { getRepository } from '@things-factory/shell'\n\nimport { DomainLink } from './domain-link.js'\nimport { NewDomainLink, DomainLinkPatch } from './domain-link-types.js'\n\n@Resolver(DomainLink)\nexport class DomainLinkMutation {\n @Directive('@transaction')\n @Directive('@privilege(superUserGranted: true)')\n @Mutation(returns => DomainLink, { description: 'To create new DomainLink' })\n async createDomainLink(\n @Arg('domainLink') domainLink: NewDomainLink,\n @Ctx() context: ResolverContext\n ): Promise<DomainLink> {\n const { user, tx } = context.state\n\n const result = await getRepository(DomainLink, tx).save({\n ...domainLink,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(superUserGranted: true)')\n @Mutation(returns => DomainLink, { description: 'To modify DomainLink information' })\n async updateDomainLink(\n @Arg('id') id: string,\n @Arg('patch') patch: DomainLinkPatch,\n @Ctx() context: ResolverContext\n ): Promise<DomainLink> {\n const { domain, user, tx } = context.state\n\n const repository = getRepository(DomainLink, tx)\n const domainLink = await repository.findOne({\n where: { id }\n })\n\n const result = await repository.save({\n ...domainLink,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(superUserGranted: true)')\n @Mutation(returns => [DomainLink], { description: \"To modify multiple DomainLinks' information\" })\n async updateMultipleDomainLink(\n @Arg('patches', type => [DomainLinkPatch]) patches: DomainLinkPatch[],\n @Ctx() context: ResolverContext\n ): Promise<DomainLink[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const domainLinkRepo = getRepository(DomainLink, tx)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await domainLinkRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const domainLink = await domainLinkRepo.findOneBy({ id: updateRecord.id })\n\n const result = await domainLinkRepo.save({\n ...domainLink,\n ...updateRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Directive('@privilege(superUserGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete DomainLink' })\n async deleteDomainLink(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(DomainLink, tx).delete({ id })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(superUserGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete multiple DomainLinks' })\n async deleteDomainLinks(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(DomainLink, tx).delete({\n id: In(ids)\n })\n\n return true\n }\n}\n"]}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { Domain, ListParam } from '@things-factory/shell';
|
2
|
+
import { User } from '../user/user.js';
|
3
|
+
import { DomainLink } from './domain-link.js';
|
4
|
+
import { DomainLinkList } from './domain-link-types.js';
|
5
|
+
export declare class DomainLinkQuery {
|
6
|
+
domainLinks(params: ListParam, context: ResolverContext): Promise<DomainLinkList>;
|
7
|
+
sourceDomain(domainLink: DomainLink): Promise<Domain>;
|
8
|
+
targetDomain(domainLink: DomainLink): Promise<Domain>;
|
9
|
+
updater(domainLink: DomainLink): Promise<User>;
|
10
|
+
creator(domainLink: DomainLink): Promise<User>;
|
11
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DomainLinkQuery = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
6
|
+
const shell_1 = require("@things-factory/shell");
|
7
|
+
const user_js_1 = require("../user/user.js");
|
8
|
+
const domain_link_js_1 = require("./domain-link.js");
|
9
|
+
const domain_link_types_js_1 = require("./domain-link-types.js");
|
10
|
+
let DomainLinkQuery = class DomainLinkQuery {
|
11
|
+
async domainLinks(params, context) {
|
12
|
+
const { domain } = context.state;
|
13
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
14
|
+
params,
|
15
|
+
repository: await (0, shell_1.getRepository)(domain_link_js_1.DomainLink),
|
16
|
+
searchables: ['sourceDomain', 'targetDomain', 'type']
|
17
|
+
});
|
18
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
19
|
+
return { items, total };
|
20
|
+
}
|
21
|
+
async sourceDomain(domainLink) {
|
22
|
+
return domainLink.sourceDomainId && (await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: domainLink.sourceDomainId }));
|
23
|
+
}
|
24
|
+
async targetDomain(domainLink) {
|
25
|
+
return domainLink.targetDomainId && (await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: domainLink.targetDomainId }));
|
26
|
+
}
|
27
|
+
async updater(domainLink) {
|
28
|
+
return domainLink.updaterId && (await (0, shell_1.getRepository)(user_js_1.User).findOneBy({ id: domainLink.updaterId }));
|
29
|
+
}
|
30
|
+
async creator(domainLink) {
|
31
|
+
return domainLink.creatorId && (await (0, shell_1.getRepository)(user_js_1.User).findOneBy({ id: domainLink.creatorId }));
|
32
|
+
}
|
33
|
+
};
|
34
|
+
exports.DomainLinkQuery = DomainLinkQuery;
|
35
|
+
tslib_1.__decorate([
|
36
|
+
(0, type_graphql_1.Directive)('@privilege(superUserGranted: true)'),
|
37
|
+
(0, type_graphql_1.Query)(returns => domain_link_types_js_1.DomainLinkList, { description: 'To fetch multiple DomainLinks' }),
|
38
|
+
tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
39
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
40
|
+
tslib_1.__metadata("design:type", Function),
|
41
|
+
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
42
|
+
tslib_1.__metadata("design:returntype", Promise)
|
43
|
+
], DomainLinkQuery.prototype, "domainLinks", null);
|
44
|
+
tslib_1.__decorate([
|
45
|
+
(0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
|
46
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
47
|
+
tslib_1.__metadata("design:type", Function),
|
48
|
+
tslib_1.__metadata("design:paramtypes", [domain_link_js_1.DomainLink]),
|
49
|
+
tslib_1.__metadata("design:returntype", Promise)
|
50
|
+
], DomainLinkQuery.prototype, "sourceDomain", null);
|
51
|
+
tslib_1.__decorate([
|
52
|
+
(0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
|
53
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
54
|
+
tslib_1.__metadata("design:type", Function),
|
55
|
+
tslib_1.__metadata("design:paramtypes", [domain_link_js_1.DomainLink]),
|
56
|
+
tslib_1.__metadata("design:returntype", Promise)
|
57
|
+
], DomainLinkQuery.prototype, "targetDomain", null);
|
58
|
+
tslib_1.__decorate([
|
59
|
+
(0, type_graphql_1.FieldResolver)(type => user_js_1.User),
|
60
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
61
|
+
tslib_1.__metadata("design:type", Function),
|
62
|
+
tslib_1.__metadata("design:paramtypes", [domain_link_js_1.DomainLink]),
|
63
|
+
tslib_1.__metadata("design:returntype", Promise)
|
64
|
+
], DomainLinkQuery.prototype, "updater", null);
|
65
|
+
tslib_1.__decorate([
|
66
|
+
(0, type_graphql_1.FieldResolver)(type => user_js_1.User),
|
67
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
68
|
+
tslib_1.__metadata("design:type", Function),
|
69
|
+
tslib_1.__metadata("design:paramtypes", [domain_link_js_1.DomainLink]),
|
70
|
+
tslib_1.__metadata("design:returntype", Promise)
|
71
|
+
], DomainLinkQuery.prototype, "creator", null);
|
72
|
+
exports.DomainLinkQuery = DomainLinkQuery = tslib_1.__decorate([
|
73
|
+
(0, type_graphql_1.Resolver)(domain_link_js_1.DomainLink)
|
74
|
+
], DomainLinkQuery);
|
75
|
+
//# sourceMappingURL=domain-link-query.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"domain-link-query.js","sourceRoot":"","sources":["../../../server/service/domain-link/domain-link-query.ts"],"names":[],"mappings":";;;;AAAA,+CAA8F;AAC9F,iDAAuG;AACvG,6CAAsC;AACtC,qDAA6C;AAC7C,iEAAuD;AAGhD,IAAM,eAAe,GAArB,MAAM,eAAe;IAGpB,AAAN,KAAK,CAAC,WAAW,CACU,MAAiB,EACnC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,MAAM;YACN,UAAU,EAAE,MAAM,IAAA,qBAAa,EAAC,2BAAU,CAAC;YAC3C,WAAW,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC;SACtD,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QAE3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CAAS,UAAsB;QAC/C,OAAO,UAAU,CAAC,cAAc,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;IAChH,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CAAS,UAAsB;QAC/C,OAAO,UAAU,CAAC,cAAc,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;IAChH,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,UAAsB;QAC1C,OAAO,UAAU,CAAC,SAAS,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IACpG,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,UAAsB;QAC1C,OAAO,UAAU,CAAC,SAAS,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IACpG,CAAC;CACF,CAAA;AAvCY,0CAAe;AAGpB;IAFL,IAAA,wBAAS,EAAC,oCAAoC,CAAC;IAC/C,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,qCAAc,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IAEhF,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IACvB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAD2B,iBAAS;;kDAc3C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACV,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAa,2BAAU;;mDAEhD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACV,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAa,2BAAU;;mDAEhD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAa,2BAAU;;8CAE3C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAa,2BAAU;;8CAE3C;0BAtCU,eAAe;IAD3B,IAAA,uBAAQ,EAAC,2BAAU,CAAC;GACR,eAAe,CAuC3B","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '../user/user.js'\nimport { DomainLink } from './domain-link.js'\nimport { DomainLinkList } from './domain-link-types.js'\n\n@Resolver(DomainLink)\nexport class DomainLinkQuery {\n @Directive('@privilege(superUserGranted: true)')\n @Query(returns => DomainLinkList, { description: 'To fetch multiple DomainLinks' })\n async domainLinks(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DomainLinkList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n params,\n repository: await getRepository(DomainLink),\n searchables: ['sourceDomain', 'targetDomain', 'type']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async sourceDomain(@Root() domainLink: DomainLink): Promise<Domain> {\n return domainLink.sourceDomainId && (await getRepository(Domain).findOneBy({ id: domainLink.sourceDomainId }))\n }\n\n @FieldResolver(type => Domain)\n async targetDomain(@Root() domainLink: DomainLink): Promise<Domain> {\n return domainLink.targetDomainId && (await getRepository(Domain).findOneBy({ id: domainLink.targetDomainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() domainLink: DomainLink): Promise<User> {\n return domainLink.updaterId && (await getRepository(User).findOneBy({ id: domainLink.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() domainLink: DomainLink): Promise<User> {\n return domainLink.creatorId && (await getRepository(User).findOneBy({ id: domainLink.creatorId }))\n }\n}\n"]}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { ObjectRef } from '@things-factory/shell';
|
2
|
+
import { DomainLink, DomainLinkType } from './domain-link.js';
|
3
|
+
export declare class NewDomainLink {
|
4
|
+
sourceDomain: ObjectRef;
|
5
|
+
targetDomain: ObjectRef;
|
6
|
+
type: DomainLinkType;
|
7
|
+
}
|
8
|
+
export declare class DomainLinkPatch {
|
9
|
+
id?: string;
|
10
|
+
sourceDomain: ObjectRef;
|
11
|
+
targetDomain: ObjectRef;
|
12
|
+
type: DomainLinkType;
|
13
|
+
cuFlag?: string;
|
14
|
+
}
|
15
|
+
export declare class DomainLinkList {
|
16
|
+
items: DomainLink[];
|
17
|
+
total: number;
|
18
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DomainLinkList = exports.DomainLinkPatch = exports.NewDomainLink = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
6
|
+
const shell_1 = require("@things-factory/shell");
|
7
|
+
const domain_link_js_1 = require("./domain-link.js");
|
8
|
+
let NewDomainLink = class NewDomainLink {
|
9
|
+
};
|
10
|
+
exports.NewDomainLink = NewDomainLink;
|
11
|
+
tslib_1.__decorate([
|
12
|
+
(0, type_graphql_1.Field)(() => shell_1.ObjectRef, { description: 'The source domain in the relationship.' }),
|
13
|
+
tslib_1.__metadata("design:type", shell_1.ObjectRef)
|
14
|
+
], NewDomainLink.prototype, "sourceDomain", void 0);
|
15
|
+
tslib_1.__decorate([
|
16
|
+
(0, type_graphql_1.Field)(() => shell_1.ObjectRef, { description: 'The target domain in the relationship.' }),
|
17
|
+
tslib_1.__metadata("design:type", shell_1.ObjectRef)
|
18
|
+
], NewDomainLink.prototype, "targetDomain", void 0);
|
19
|
+
tslib_1.__decorate([
|
20
|
+
(0, type_graphql_1.Field)({ description: 'The type of the relationship.' }),
|
21
|
+
tslib_1.__metadata("design:type", String)
|
22
|
+
], NewDomainLink.prototype, "type", void 0);
|
23
|
+
exports.NewDomainLink = NewDomainLink = tslib_1.__decorate([
|
24
|
+
(0, type_graphql_1.InputType)({ description: 'Input for creating a new domain link.' })
|
25
|
+
], NewDomainLink);
|
26
|
+
let DomainLinkPatch = class DomainLinkPatch {
|
27
|
+
};
|
28
|
+
exports.DomainLinkPatch = DomainLinkPatch;
|
29
|
+
tslib_1.__decorate([
|
30
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'The unique identifier of the domain link to update.' }),
|
31
|
+
tslib_1.__metadata("design:type", String)
|
32
|
+
], DomainLinkPatch.prototype, "id", void 0);
|
33
|
+
tslib_1.__decorate([
|
34
|
+
(0, type_graphql_1.Field)(() => shell_1.ObjectRef, { nullable: true, description: 'The new source domain for the relationship.' }),
|
35
|
+
tslib_1.__metadata("design:type", shell_1.ObjectRef)
|
36
|
+
], DomainLinkPatch.prototype, "sourceDomain", void 0);
|
37
|
+
tslib_1.__decorate([
|
38
|
+
(0, type_graphql_1.Field)(() => shell_1.ObjectRef, { nullable: true, description: 'The new target domain for the relationship.' }),
|
39
|
+
tslib_1.__metadata("design:type", shell_1.ObjectRef)
|
40
|
+
], DomainLinkPatch.prototype, "targetDomain", void 0);
|
41
|
+
tslib_1.__decorate([
|
42
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The new type for the relationship.' }),
|
43
|
+
tslib_1.__metadata("design:type", String)
|
44
|
+
], DomainLinkPatch.prototype, "type", void 0);
|
45
|
+
tslib_1.__decorate([
|
46
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'A flag indicating whether the link is being created, updated, or deleted.' }),
|
47
|
+
tslib_1.__metadata("design:type", String)
|
48
|
+
], DomainLinkPatch.prototype, "cuFlag", void 0);
|
49
|
+
exports.DomainLinkPatch = DomainLinkPatch = tslib_1.__decorate([
|
50
|
+
(0, type_graphql_1.InputType)({ description: 'Input for updating (patching) an existing domain link.' })
|
51
|
+
], DomainLinkPatch);
|
52
|
+
let DomainLinkList = class DomainLinkList {
|
53
|
+
};
|
54
|
+
exports.DomainLinkList = DomainLinkList;
|
55
|
+
tslib_1.__decorate([
|
56
|
+
(0, type_graphql_1.Field)(type => [domain_link_js_1.DomainLink], { description: 'The list of domain link items.' }),
|
57
|
+
tslib_1.__metadata("design:type", Array)
|
58
|
+
], DomainLinkList.prototype, "items", void 0);
|
59
|
+
tslib_1.__decorate([
|
60
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The total number of domain links.' }),
|
61
|
+
tslib_1.__metadata("design:type", Number)
|
62
|
+
], DomainLinkList.prototype, "total", void 0);
|
63
|
+
exports.DomainLinkList = DomainLinkList = tslib_1.__decorate([
|
64
|
+
(0, type_graphql_1.ObjectType)({ description: 'A paginated list of domain links.' })
|
65
|
+
], DomainLinkList);
|
66
|
+
//# sourceMappingURL=domain-link-types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"domain-link-types.js","sourceRoot":"","sources":["../../../server/service/domain-link/domain-link-types.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,iDAAiD;AAEjD,qDAA6D;AAGtD,IAAM,aAAa,GAAnB,MAAM,aAAa;CASzB,CAAA;AATY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,iBAAS,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;sCACpE,iBAAS;mDAAA;AAGvB;IADC,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,iBAAS,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;sCACpE,iBAAS;mDAAA;AAGvB;IADC,IAAA,oBAAK,EAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;2CACpC;wBART,aAAa;IADzB,IAAA,wBAAS,EAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;GACvD,aAAa,CASzB;AAGM,IAAM,eAAe,GAArB,MAAM,eAAe;CAe3B,CAAA;AAfY,0CAAe;AAE1B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC;;2CAC/E;AAGX;IADC,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,iBAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC;sCACzF,iBAAS;qDAAA;AAGvB;IADC,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,iBAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC;sCACzF,iBAAS;qDAAA;AAGvB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;;6CACzD;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,2EAA2E,EAAE,CAAC;;+CACrG;0BAdJ,eAAe;IAD3B,IAAA,wBAAS,EAAC,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC;GACxE,eAAe,CAe3B;AAGM,IAAM,cAAc,GAApB,MAAM,cAAc;CAM1B,CAAA;AANY,wCAAc;AAEzB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,2BAAU,CAAC,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;;6CAC5D;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;;6CAC5D;yBALF,cAAc;IAD1B,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;GACpD,cAAc,CAM1B","sourcesContent":["import { ObjectType, Field, InputType, Int, ID } from 'type-graphql'\n\nimport { ObjectRef } from '@things-factory/shell'\n\nimport { DomainLink, DomainLinkType } from './domain-link.js'\n\n@InputType({ description: 'Input for creating a new domain link.' })\nexport class NewDomainLink {\n @Field(() => ObjectRef, { description: 'The source domain in the relationship.' })\n sourceDomain: ObjectRef\n\n @Field(() => ObjectRef, { description: 'The target domain in the relationship.' })\n targetDomain: ObjectRef\n\n @Field({ description: 'The type of the relationship.' })\n type: DomainLinkType\n}\n\n@InputType({ description: 'Input for updating (patching) an existing domain link.' })\nexport class DomainLinkPatch {\n @Field(type => ID, { description: 'The unique identifier of the domain link to update.' })\n id?: string\n\n @Field(() => ObjectRef, { nullable: true, description: 'The new source domain for the relationship.' })\n sourceDomain: ObjectRef\n\n @Field(() => ObjectRef, { nullable: true, description: 'The new target domain for the relationship.' })\n targetDomain: ObjectRef\n\n @Field({ nullable: true, description: 'The new type for the relationship.' })\n type: DomainLinkType\n\n @Field({ nullable: true, description: 'A flag indicating whether the link is being created, updated, or deleted.' })\n cuFlag?: string\n}\n\n@ObjectType({ description: 'A paginated list of domain links.' })\nexport class DomainLinkList {\n @Field(type => [DomainLink], { description: 'The list of domain link items.' })\n items: DomainLink[]\n\n @Field(type => Int, { description: 'The total number of domain links.' })\n total: number\n}\n"]}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { Domain } from '@things-factory/shell';
|
2
|
+
import { User } from '../user/user.js';
|
3
|
+
export declare enum DomainLinkType {
|
4
|
+
has = "has",// Represents a general association or membership.
|
5
|
+
maintains = "maintains",// Represents a relationship where the source domain manages or maintains the target domain.
|
6
|
+
owns = "owns"
|
7
|
+
}
|
8
|
+
export declare class DomainLink {
|
9
|
+
readonly id: string;
|
10
|
+
/** Source Domain */
|
11
|
+
sourceDomain: Domain;
|
12
|
+
sourceDomainId: string;
|
13
|
+
/** Target Domain */
|
14
|
+
targetDomain: Domain;
|
15
|
+
targetDomainId: string;
|
16
|
+
/** Link Type */
|
17
|
+
type: DomainLinkType;
|
18
|
+
/** Creation Timestamp */
|
19
|
+
createdAt: Date;
|
20
|
+
/** Last Update Timestamp */
|
21
|
+
updatedAt: Date;
|
22
|
+
/** Creator User */
|
23
|
+
creator?: User;
|
24
|
+
creatorId?: string;
|
25
|
+
/** Updater User */
|
26
|
+
updater?: User;
|
27
|
+
updaterId?: string;
|
28
|
+
}
|
@@ -0,0 +1,105 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DomainLink = exports.DomainLinkType = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
5
|
+
const typeorm_1 = require("typeorm");
|
6
|
+
const type_graphql_1 = require("type-graphql");
|
7
|
+
const env_1 = require("@things-factory/env");
|
8
|
+
const shell_1 = require("@things-factory/shell");
|
9
|
+
const user_js_1 = require("../user/user.js");
|
10
|
+
const ORMCONFIG = env_1.config.get('ormconfig', {});
|
11
|
+
const DATABASE_TYPE = ORMCONFIG.type;
|
12
|
+
var DomainLinkType;
|
13
|
+
(function (DomainLinkType) {
|
14
|
+
DomainLinkType["has"] = "has";
|
15
|
+
DomainLinkType["maintains"] = "maintains";
|
16
|
+
DomainLinkType["owns"] = "owns"; // Represents an ownership relationship.
|
17
|
+
})(DomainLinkType || (exports.DomainLinkType = DomainLinkType = {}));
|
18
|
+
(0, type_graphql_1.registerEnumType)(DomainLinkType, {
|
19
|
+
name: 'DomainLinkType',
|
20
|
+
description: 'Enumeration of relationship types between domains.'
|
21
|
+
});
|
22
|
+
let DomainLink = class DomainLink {
|
23
|
+
};
|
24
|
+
exports.DomainLink = DomainLink;
|
25
|
+
tslib_1.__decorate([
|
26
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
27
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'Unique identifier for the domain link.' }),
|
28
|
+
tslib_1.__metadata("design:type", String)
|
29
|
+
], DomainLink.prototype, "id", void 0);
|
30
|
+
tslib_1.__decorate([
|
31
|
+
(0, typeorm_1.ManyToOne)(() => shell_1.Domain, { nullable: false, onDelete: 'CASCADE' }),
|
32
|
+
(0, type_graphql_1.Field)(() => shell_1.Domain, { description: 'The source domain in the relationship.' }),
|
33
|
+
tslib_1.__metadata("design:type", shell_1.Domain)
|
34
|
+
], DomainLink.prototype, "sourceDomain", void 0);
|
35
|
+
tslib_1.__decorate([
|
36
|
+
(0, typeorm_1.RelationId)((domainLink) => domainLink.sourceDomain),
|
37
|
+
tslib_1.__metadata("design:type", String)
|
38
|
+
], DomainLink.prototype, "sourceDomainId", void 0);
|
39
|
+
tslib_1.__decorate([
|
40
|
+
(0, typeorm_1.ManyToOne)(() => shell_1.Domain, { nullable: false, onDelete: 'CASCADE' }),
|
41
|
+
(0, type_graphql_1.Field)(() => shell_1.Domain, { description: 'The target domain in the relationship.' }),
|
42
|
+
tslib_1.__metadata("design:type", shell_1.Domain)
|
43
|
+
], DomainLink.prototype, "targetDomain", void 0);
|
44
|
+
tslib_1.__decorate([
|
45
|
+
(0, typeorm_1.RelationId)((domainLink) => domainLink.targetDomain),
|
46
|
+
tslib_1.__metadata("design:type", String)
|
47
|
+
], DomainLink.prototype, "targetDomainId", void 0);
|
48
|
+
tslib_1.__decorate([
|
49
|
+
(0, typeorm_1.Column)({
|
50
|
+
type: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
51
|
+
? 'enum'
|
52
|
+
: DATABASE_TYPE == 'oracle'
|
53
|
+
? 'varchar2'
|
54
|
+
: DATABASE_TYPE == 'mssql'
|
55
|
+
? 'nvarchar'
|
56
|
+
: 'varchar',
|
57
|
+
enum: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
58
|
+
? DomainLinkType
|
59
|
+
: undefined,
|
60
|
+
length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined : 32,
|
61
|
+
default: DomainLinkType.has
|
62
|
+
}),
|
63
|
+
(0, type_graphql_1.Field)({ description: 'The type of the relationship (e.g., has, maintains, owns).' }),
|
64
|
+
tslib_1.__metadata("design:type", String)
|
65
|
+
], DomainLink.prototype, "type", void 0);
|
66
|
+
tslib_1.__decorate([
|
67
|
+
(0, typeorm_1.CreateDateColumn)(),
|
68
|
+
(0, type_graphql_1.Field)({ description: 'The timestamp when the domain link was created.' }),
|
69
|
+
tslib_1.__metadata("design:type", Date
|
70
|
+
/** Last Update Timestamp */
|
71
|
+
)
|
72
|
+
], DomainLink.prototype, "createdAt", void 0);
|
73
|
+
tslib_1.__decorate([
|
74
|
+
(0, typeorm_1.UpdateDateColumn)(),
|
75
|
+
(0, type_graphql_1.Field)({ description: 'The timestamp when the domain link was last updated.' }),
|
76
|
+
tslib_1.__metadata("design:type", Date
|
77
|
+
/** Creator User */
|
78
|
+
)
|
79
|
+
], DomainLink.prototype, "updatedAt", void 0);
|
80
|
+
tslib_1.__decorate([
|
81
|
+
(0, typeorm_1.ManyToOne)(() => user_js_1.User, { nullable: true }),
|
82
|
+
(0, type_graphql_1.Field)(() => user_js_1.User, { nullable: true, description: 'The user who created the domain link.' }),
|
83
|
+
tslib_1.__metadata("design:type", user_js_1.User)
|
84
|
+
], DomainLink.prototype, "creator", void 0);
|
85
|
+
tslib_1.__decorate([
|
86
|
+
(0, typeorm_1.RelationId)((domainLink) => domainLink.creator),
|
87
|
+
tslib_1.__metadata("design:type", String)
|
88
|
+
], DomainLink.prototype, "creatorId", void 0);
|
89
|
+
tslib_1.__decorate([
|
90
|
+
(0, typeorm_1.ManyToOne)(() => user_js_1.User, { nullable: true }),
|
91
|
+
(0, type_graphql_1.Field)(() => user_js_1.User, { nullable: true, description: 'The user who last updated the domain link.' }),
|
92
|
+
tslib_1.__metadata("design:type", user_js_1.User)
|
93
|
+
], DomainLink.prototype, "updater", void 0);
|
94
|
+
tslib_1.__decorate([
|
95
|
+
(0, typeorm_1.RelationId)((domainLink) => domainLink.updater),
|
96
|
+
tslib_1.__metadata("design:type", String)
|
97
|
+
], DomainLink.prototype, "updaterId", void 0);
|
98
|
+
exports.DomainLink = DomainLink = tslib_1.__decorate([
|
99
|
+
(0, typeorm_1.Entity)(),
|
100
|
+
(0, typeorm_1.Index)('ix_domain_link_unique', (domainLink) => [domainLink.sourceDomain, domainLink.targetDomain, domainLink.type], { unique: true }),
|
101
|
+
(0, typeorm_1.Index)('ix_domain_link_source', (domainLink) => [domainLink.sourceDomain]),
|
102
|
+
(0, typeorm_1.Index)('ix_domain_link_target', (domainLink) => [domainLink.targetDomain]),
|
103
|
+
(0, type_graphql_1.ObjectType)({ description: 'Represents a typed relationship between two domains.' })
|
104
|
+
], DomainLink);
|
105
|
+
//# sourceMappingURL=domain-link.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"domain-link.js","sourceRoot":"","sources":["../../../server/service/domain-link/domain-link.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { ObjectType, Field, ID, registerEnumType } from 'type-graphql'\n\nimport { config } from '@things-factory/env'\nimport { Domain } from '@things-factory/shell'\nimport { User } from '../user/user.js'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\nexport enum DomainLinkType {\n has = 'has', // Represents a general association or membership.\n maintains = 'maintains', // Represents a relationship where the source domain manages or maintains the target domain.\n owns = 'owns' // Represents an ownership relationship.\n}\n\nregisterEnumType(DomainLinkType, {\n name: 'DomainLinkType',\n description: 'Enumeration of relationship types between domains.'\n})\n\n@Entity()\n@Index(\n 'ix_domain_link_unique',\n (domainLink: DomainLink) => [domainLink.sourceDomain, domainLink.targetDomain, domainLink.type],\n { unique: true }\n)\n@Index('ix_domain_link_source', (domainLink: DomainLink) => [domainLink.sourceDomain])\n@Index('ix_domain_link_target', (domainLink: DomainLink) => [domainLink.targetDomain])\n@ObjectType({ description: 'Represents a typed relationship between two domains.' })\nexport class DomainLink {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Unique identifier for the domain link.' })\n readonly id: string\n\n /** Source Domain */\n @ManyToOne(() => Domain, { nullable: false, onDelete: 'CASCADE' })\n @Field(() => Domain, { description: 'The source domain in the relationship.' })\n sourceDomain: Domain\n\n @RelationId((domainLink: DomainLink) => domainLink.sourceDomain)\n sourceDomainId: string\n\n /** Target Domain */\n @ManyToOne(() => Domain, { nullable: false, onDelete: 'CASCADE' })\n @Field(() => Domain, { description: 'The target domain in the relationship.' })\n targetDomain: Domain\n\n @RelationId((domainLink: DomainLink) => domainLink.targetDomain)\n targetDomainId: string\n\n /** Link Type */\n @Column({\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : DATABASE_TYPE == 'mssql'\n ? 'nvarchar'\n : 'varchar',\n enum:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? DomainLinkType\n : undefined,\n length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined : 32,\n default: DomainLinkType.has\n })\n @Field({ description: 'The type of the relationship (e.g., has, maintains, owns).' })\n type: DomainLinkType\n\n /** Creation Timestamp */\n @CreateDateColumn()\n @Field({ description: 'The timestamp when the domain link was created.' })\n createdAt: Date\n\n /** Last Update Timestamp */\n @UpdateDateColumn()\n @Field({ description: 'The timestamp when the domain link was last updated.' })\n updatedAt: Date\n\n /** Creator User */\n @ManyToOne(() => User, { nullable: true })\n @Field(() => User, { nullable: true, description: 'The user who created the domain link.' })\n creator?: User\n\n @RelationId((domainLink: DomainLink) => domainLink.creator)\n creatorId?: string\n\n /** Updater User */\n @ManyToOne(() => User, { nullable: true })\n @Field(() => User, { nullable: true, description: 'The user who last updated the domain link.' })\n updater?: User\n\n @RelationId((domainLink: DomainLink) => domainLink.updater)\n updaterId?: string\n}\n"]}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { DomainLink } from './domain-link.js';
|
2
|
+
import { DomainLinkQuery } from './domain-link-query.js';
|
3
|
+
import { DomainLinkMutation } from './domain-link-mutation.js';
|
4
|
+
export declare const entities: (typeof DomainLink)[];
|
5
|
+
export declare const resolvers: (typeof DomainLinkQuery | typeof DomainLinkMutation)[];
|
6
|
+
export declare const subscribers: any[];
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.subscribers = exports.resolvers = exports.entities = void 0;
|
4
|
+
const domain_link_js_1 = require("./domain-link.js");
|
5
|
+
const domain_link_query_js_1 = require("./domain-link-query.js");
|
6
|
+
const domain_link_mutation_js_1 = require("./domain-link-mutation.js");
|
7
|
+
exports.entities = [domain_link_js_1.DomainLink];
|
8
|
+
exports.resolvers = [domain_link_query_js_1.DomainLinkQuery, domain_link_mutation_js_1.DomainLinkMutation];
|
9
|
+
exports.subscribers = [];
|
10
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/domain-link/index.ts"],"names":[],"mappings":";;;AAAA,qDAA6C;AAC7C,iEAAwD;AACxD,uEAA8D;AAEjD,QAAA,QAAQ,GAAG,CAAC,2BAAU,CAAC,CAAA;AACvB,QAAA,SAAS,GAAG,CAAC,sCAAe,EAAE,4CAAkB,CAAC,CAAA;AACjD,QAAA,WAAW,GAAG,EAAE,CAAA","sourcesContent":["import { DomainLink } from './domain-link.js'\nimport { DomainLinkQuery } from './domain-link-query.js'\nimport { DomainLinkMutation } from './domain-link-mutation.js'\n\nexport const entities = [DomainLink]\nexport const resolvers = [DomainLinkQuery, DomainLinkMutation]\nexport const subscribers = []\n"]}
|
@@ -45,7 +45,7 @@ let GrantedRoleMutation = class GrantedRoleMutation {
|
|
45
45
|
const nonGrantedRoles = await tx.getRepository(role_js_1.Role).find({
|
46
46
|
where: { domain: { id: domain.id }, id: (0, typeorm_1.Not)((0, typeorm_1.In)(grantedRoleIds)) }
|
47
47
|
});
|
48
|
-
if (nonGrantedRoles
|
48
|
+
if (nonGrantedRoles?.length) {
|
49
49
|
// Find customer's user who has non granted roles already
|
50
50
|
const nonGrantedRoleIds = nonGrantedRoles.map((role) => role.id);
|
51
51
|
let havingRefusedRoleCustomers = await getCustomerUsersByRoles(customerDomain, nonGrantedRoles, tx);
|
@@ -92,7 +92,7 @@ async function getGrantedCustomerUsers(domain, customerDomain, trx) {
|
|
92
92
|
async function getCustomerUsersByRoles(customerDomain, roles, trx) {
|
93
93
|
if (!roles.length)
|
94
94
|
return [];
|
95
|
-
const userRepo =
|
95
|
+
const userRepo = trx?.getRepository(user_js_1.User) || (0, shell_1.getRepository)(user_js_1.User);
|
96
96
|
const customerUsers = await userRepo
|
97
97
|
.createQueryBuilder('USER')
|
98
98
|
.select('USER.id')
|
@@ -114,7 +114,7 @@ async function getCustomerUsersByRoles(customerDomain, roles, trx) {
|
|
114
114
|
});
|
115
115
|
}
|
116
116
|
async function getGrantedRolesToCustomer(domain, customerDomain, trx) {
|
117
|
-
const grantedRoleRepo =
|
117
|
+
const grantedRoleRepo = trx?.getRepository(granted_role_js_1.GrantedRole) || (0, shell_1.getRepository)(granted_role_js_1.GrantedRole);
|
118
118
|
const grantedRoleQueryBuilder = grantedRoleRepo.createQueryBuilder('GRANTED_ROLE');
|
119
119
|
return await grantedRoleQueryBuilder
|
120
120
|
.leftJoinAndSelect('GRANTED_ROLE.domain', 'DOMAIN')
|
@@ -125,16 +125,16 @@ async function getGrantedRolesToCustomer(domain, customerDomain, trx) {
|
|
125
125
|
.getMany();
|
126
126
|
}
|
127
127
|
async function terminateGrantedRoles(domain, customerDomain, trx) {
|
128
|
-
const userRepo =
|
129
|
-
const grantedRoleRepo =
|
128
|
+
const userRepo = trx?.getRepository(user_js_1.User) || (0, shell_1.getRepository)(user_js_1.User);
|
129
|
+
const grantedRoleRepo = trx?.getRepository(granted_role_js_1.GrantedRole) || (0, shell_1.getRepository)(granted_role_js_1.GrantedRole);
|
130
130
|
const grantedRoles = await getGrantedRolesToCustomer(domain, customerDomain, trx);
|
131
131
|
const customerUsers = await getGrantedCustomerUsers(domain, customerDomain, trx);
|
132
132
|
for (let i = 0; i < customerUsers.length; i++) {
|
133
133
|
customerUsers[i].roles = customerUsers[i].roles.filter((role) => role.domain.id !== domain.id);
|
134
134
|
}
|
135
|
-
if (customerUsers
|
135
|
+
if (customerUsers?.length)
|
136
136
|
await userRepo.save(customerUsers);
|
137
|
-
if (grantedRoles
|
137
|
+
if (grantedRoles?.length)
|
138
138
|
await grantedRoleRepo.delete(grantedRoles.map((grantedRole) => grantedRole.id));
|
139
139
|
}
|
140
140
|
//# sourceMappingURL=granted-role-mutation.js.map
|