@multitenantkit/domain 0.1.1 → 0.1.3
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/dist/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.d.ts +3 -2
- package/dist/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.d.ts.map +1 -1
- package/dist/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.js +49 -18
- package/dist/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.js.map +1 -1
- package/dist/organizations/use-cases/create-organization/CreateOrganization.d.ts +7 -2
- package/dist/organizations/use-cases/create-organization/CreateOrganization.d.ts.map +1 -1
- package/dist/organizations/use-cases/create-organization/CreateOrganization.js +69 -23
- package/dist/organizations/use-cases/create-organization/CreateOrganization.js.map +1 -1
- package/dist/shared/use-case/BaseUseCase.d.ts +3 -3
- package/dist/shared/use-case/BaseUseCase.d.ts.map +1 -1
- package/dist/shared/use-case/BaseUseCase.js +42 -9
- package/dist/shared/use-case/BaseUseCase.js.map +1 -1
- package/package.json +2 -2
package/dist/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.d.ts
CHANGED
|
@@ -11,9 +11,10 @@ import { BaseUseCase } from '../../../shared/use-case';
|
|
|
11
11
|
* Generic support for custom fields:
|
|
12
12
|
* @template TOrganizationCustomFields - Custom fields for OrganizationRepository (for consistency)
|
|
13
13
|
*/
|
|
14
|
-
export declare class AddOrganizationMember<TOrganizationCustomFields = {}, TUserCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<AddOrganizationMemberInput, AddOrganizationMemberOutput, DomainError, TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> implements IAddOrganizationMember {
|
|
14
|
+
export declare class AddOrganizationMember<TOrganizationCustomFields = {}, TUserCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<AddOrganizationMemberInput & TOrganizationMembershipCustomFields, AddOrganizationMemberOutput, DomainError, TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> implements IAddOrganizationMember {
|
|
15
|
+
private readonly membershipCustomSchema?;
|
|
15
16
|
constructor(adapters: Adapters<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>, toolkitOptions?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>);
|
|
16
17
|
protected authorize(input: AddOrganizationMemberInput, _context: OperationContext): Promise<Result<void, DomainError>>;
|
|
17
|
-
protected executeBusinessLogic(input: AddOrganizationMemberInput, context: OperationContext): Promise<Result<AddOrganizationMemberOutput, DomainError>>;
|
|
18
|
+
protected executeBusinessLogic(input: AddOrganizationMemberInput & TOrganizationMembershipCustomFields, context: OperationContext): Promise<Result<AddOrganizationMemberOutput, DomainError>>;
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=AddOrganizationMember.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddOrganizationMember.d.ts","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EACR,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACzB,MAAM,2DAA2D,CAAC;
|
|
1
|
+
{"version":3,"file":"AddOrganizationMember.d.ts","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EACR,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACzB,MAAM,2DAA2D,CAAC;AAOnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAEH,KAAK,WAAW,EAInB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,qBAAqB,CAE1B,yBAAyB,GAAG,EAAE,EAE9B,iBAAiB,GAAG,EAAE,EAEtB,mCAAmC,GAAG,EAAE,CAE5C,SAAQ,WAAW,CACf,0BAA0B,GAAG,mCAAmC,EAChE,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CAEvC,YAAW,sBAAsB;IAEjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAmB;gBAGvD,QAAQ,EAAE,QAAQ,CACd,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,EACD,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC;cAyBW,SAAS,CACrB,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;cAqDrB,oBAAoB,CAChC,KAAK,EAAE,0BAA0B,GAAG,mCAAmC,EACvE,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;CAwI/D"}
|
package/dist/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AddOrganizationMemberInputSchema, AddOrganizationMemberOutputSchema } from '@multitenantkit/domain-contracts/organization-memberships';
|
|
1
|
+
import { AddOrganizationMemberInputSchema, AddOrganizationMemberOutputSchema, OrganizationMembershipSchema } from '@multitenantkit/domain-contracts/organization-memberships';
|
|
2
2
|
import { ConflictError, NotFoundError, UnauthorizedError, ValidationError } from '@multitenantkit/domain-contracts/shared/errors/index';
|
|
3
3
|
import { Result } from '../../../shared/result/Result';
|
|
4
4
|
import { BaseUseCase } from '../../../shared/use-case';
|
|
@@ -10,8 +10,17 @@ import { BaseUseCase } from '../../../shared/use-case';
|
|
|
10
10
|
* @template TOrganizationCustomFields - Custom fields for OrganizationRepository (for consistency)
|
|
11
11
|
*/
|
|
12
12
|
export class AddOrganizationMember extends BaseUseCase {
|
|
13
|
+
membershipCustomSchema;
|
|
13
14
|
constructor(adapters, toolkitOptions) {
|
|
14
|
-
|
|
15
|
+
// Extract organization membership custom schema from toolkit options
|
|
16
|
+
const membershipCustomSchema = toolkitOptions?.organizationMemberships?.customFields
|
|
17
|
+
?.customSchema;
|
|
18
|
+
// Build input schema with membership custom fields if provided
|
|
19
|
+
const inputSchema = (membershipCustomSchema
|
|
20
|
+
? AddOrganizationMemberInputSchema.and(membershipCustomSchema.partial())
|
|
21
|
+
: AddOrganizationMemberInputSchema);
|
|
22
|
+
super('organizationMembership-addOrganizationMember', adapters, toolkitOptions, inputSchema, AddOrganizationMemberOutputSchema, 'Failed to add organization member');
|
|
23
|
+
this.membershipCustomSchema = membershipCustomSchema;
|
|
15
24
|
}
|
|
16
25
|
async authorize(input, _context) {
|
|
17
26
|
// Ensure organization exists for permission checks
|
|
@@ -44,17 +53,20 @@ export class AddOrganizationMember extends BaseUseCase {
|
|
|
44
53
|
return Result.ok(undefined);
|
|
45
54
|
}
|
|
46
55
|
async executeBusinessLogic(input, context) {
|
|
47
|
-
// 1.
|
|
48
|
-
const
|
|
56
|
+
// 1. Extract custom fields from input
|
|
57
|
+
const { principalExternalId, organizationId, username, roleCode, ...customFields } = input;
|
|
58
|
+
const baseInput = { principalExternalId, organizationId, username, roleCode };
|
|
59
|
+
// 2. Validate target user exists
|
|
60
|
+
const targetUser = await this.adapters.persistence.userRepository.findByUsername(baseInput.username);
|
|
49
61
|
const now = this.adapters.system.clock.now();
|
|
50
62
|
let existingMembership = null;
|
|
51
63
|
// If user doesn't exist, just create the membership without user id
|
|
52
64
|
if (targetUser) {
|
|
53
|
-
//
|
|
54
|
-
const existingMembershipDB = await this.adapters.persistence.organizationMembershipRepository.findByUserIdAndOrganizationId(targetUser.id,
|
|
65
|
+
// 3. Check if user already has a membership
|
|
66
|
+
const existingMembershipDB = await this.adapters.persistence.organizationMembershipRepository.findByUserIdAndOrganizationId(targetUser.id, baseInput.organizationId);
|
|
55
67
|
existingMembership = existingMembershipDB;
|
|
56
68
|
if (existingMembership && !existingMembership.leftAt && !existingMembership.deletedAt) {
|
|
57
|
-
return Result.fail(new ConflictError('OrganizationMembership', `${targetUser.id}:${
|
|
69
|
+
return Result.fail(new ConflictError('OrganizationMembership', `${targetUser.id}:${baseInput.organizationId}`, {
|
|
58
70
|
reason: 'User is already a member of this organization'
|
|
59
71
|
}));
|
|
60
72
|
}
|
|
@@ -62,7 +74,7 @@ export class AddOrganizationMember extends BaseUseCase {
|
|
|
62
74
|
let membership;
|
|
63
75
|
if (existingMembership && !!existingMembership.leftAt && !existingMembership.deletedAt) {
|
|
64
76
|
// 4a. Reactivate existing membership that was left
|
|
65
|
-
const
|
|
77
|
+
const reactivatedMembershipBase = {
|
|
66
78
|
...existingMembership,
|
|
67
79
|
invitedAt: now,
|
|
68
80
|
joinedAt: undefined,
|
|
@@ -70,21 +82,26 @@ export class AddOrganizationMember extends BaseUseCase {
|
|
|
70
82
|
deletedAt: undefined,
|
|
71
83
|
updatedAt: now
|
|
72
84
|
};
|
|
85
|
+
// Merge base with custom fields
|
|
86
|
+
const reactivatedMembership = {
|
|
87
|
+
...reactivatedMembershipBase,
|
|
88
|
+
...customFields
|
|
89
|
+
};
|
|
73
90
|
// Then update the role if it's different from current role
|
|
74
91
|
membership =
|
|
75
|
-
reactivatedMembership.roleCode !==
|
|
76
|
-
? { ...reactivatedMembership, roleCode:
|
|
92
|
+
reactivatedMembership.roleCode !== baseInput.roleCode
|
|
93
|
+
? { ...reactivatedMembership, roleCode: baseInput.roleCode, updatedAt: now }
|
|
77
94
|
: reactivatedMembership;
|
|
78
95
|
}
|
|
79
96
|
else {
|
|
80
|
-
// 4b. Create new membership
|
|
97
|
+
// 4b. Create new membership with custom fields
|
|
81
98
|
const membershipId = this.adapters.system.uuid.generate();
|
|
82
|
-
|
|
99
|
+
const membershipBase = {
|
|
83
100
|
id: membershipId,
|
|
84
101
|
userId: targetUser?.id,
|
|
85
|
-
username:
|
|
86
|
-
organizationId:
|
|
87
|
-
roleCode:
|
|
102
|
+
username: baseInput.username,
|
|
103
|
+
organizationId: baseInput.organizationId,
|
|
104
|
+
roleCode: baseInput.roleCode,
|
|
88
105
|
invitedAt: now,
|
|
89
106
|
joinedAt: undefined,
|
|
90
107
|
leftAt: undefined,
|
|
@@ -92,11 +109,25 @@ export class AddOrganizationMember extends BaseUseCase {
|
|
|
92
109
|
createdAt: now,
|
|
93
110
|
updatedAt: now
|
|
94
111
|
};
|
|
112
|
+
// Merge base membership with custom fields
|
|
113
|
+
membership = {
|
|
114
|
+
...membershipBase,
|
|
115
|
+
...customFields
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// 5. Validate the membership data (base + custom) if custom schema exists
|
|
119
|
+
if (this.membershipCustomSchema) {
|
|
120
|
+
const membershipSchema = OrganizationMembershipSchema.and(this.membershipCustomSchema);
|
|
121
|
+
const membershipValidation = membershipSchema.safeParse(membership);
|
|
122
|
+
if (!membershipValidation.success) {
|
|
123
|
+
const firstError = membershipValidation.error.errors[0];
|
|
124
|
+
return Result.fail(new ValidationError(`Membership validation failed: ${firstError.message}`, firstError.path.join('.')));
|
|
125
|
+
}
|
|
95
126
|
}
|
|
96
|
-
//
|
|
127
|
+
// 6. Persist the entity (save or update) using Unit of Work (transaction) with audit context
|
|
97
128
|
const auditContext = {
|
|
98
129
|
...context,
|
|
99
|
-
organizationId:
|
|
130
|
+
organizationId: baseInput.organizationId,
|
|
100
131
|
auditAction: 'ADD_ORGANIZATION_MEMBER'
|
|
101
132
|
};
|
|
102
133
|
try {
|
|
@@ -116,7 +147,7 @@ export class AddOrganizationMember extends BaseUseCase {
|
|
|
116
147
|
originalError: error
|
|
117
148
|
}));
|
|
118
149
|
}
|
|
119
|
-
//
|
|
150
|
+
// 7. KEY PATTERN: Spread + Parse to guarantee contract
|
|
120
151
|
const output = AddOrganizationMemberOutputSchema.parse({
|
|
121
152
|
...membership
|
|
122
153
|
});
|
package/dist/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddOrganizationMember.js","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,gCAAgC,EAChC,iCAAiC,
|
|
1
|
+
{"version":3,"file":"AddOrganizationMember.js","sourceRoot":"","sources":["../../../../src/organization-memberships/use-cases/add-organization-member/AddOrganizationMember.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,14 @@ import { BaseUseCase } from '../../../shared/use-case';
|
|
|
11
11
|
* Generic support for custom fields:
|
|
12
12
|
* @template TOrganizationCustomFields - Custom fields added to Organization
|
|
13
13
|
*/
|
|
14
|
-
export declare class CreateOrganization<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<CreateOrganizationInput & TOrganizationCustomFields
|
|
14
|
+
export declare class CreateOrganization<TUserCustomFields = {}, TOrganizationCustomFields = {}, TOrganizationMembershipCustomFields = {}> extends BaseUseCase<CreateOrganizationInput & TOrganizationCustomFields & {
|
|
15
|
+
ownerMembershipCustomFields?: TOrganizationMembershipCustomFields;
|
|
16
|
+
}, CreateOrganizationOutput, DomainError, TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields> implements ICreateOrganization {
|
|
15
17
|
private readonly customSchema?;
|
|
18
|
+
private readonly membershipCustomSchema?;
|
|
16
19
|
constructor(adapters: Adapters<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>, toolkitOptions?: ToolkitOptions<TUserCustomFields, TOrganizationCustomFields, TOrganizationMembershipCustomFields>);
|
|
17
|
-
protected executeBusinessLogic(input: CreateOrganizationInput & TOrganizationCustomFields
|
|
20
|
+
protected executeBusinessLogic(input: CreateOrganizationInput & TOrganizationCustomFields & {
|
|
21
|
+
ownerMembershipCustomFields?: TOrganizationMembershipCustomFields;
|
|
22
|
+
}, context: OperationContext): Promise<Result<CreateOrganizationOutput, DomainError>>;
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=CreateOrganization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateOrganization.d.ts","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,KAAK,EACR,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EAEtB,MAAM,gDAAgD,CAAC;AAKxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EACH,KAAK,WAAW,EAEnB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,kBAAkB,CAEvB,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,CAE5C,SAAQ,WAAW,CACf,uBAAuB,
|
|
1
|
+
{"version":3,"file":"CreateOrganization.d.ts","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,KAAK,EACR,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EAEtB,MAAM,gDAAgD,CAAC;AAKxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EACH,KAAK,WAAW,EAEnB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,kBAAkB,CAEvB,iBAAiB,GAAG,EAAE,EAEtB,yBAAyB,GAAG,EAAE,EAE9B,mCAAmC,GAAG,EAAE,CAE5C,SAAQ,WAAW,CACf,uBAAuB,GACnB,yBAAyB,GAAG;IACxB,2BAA2B,CAAC,EAAE,mCAAmC,CAAC;CACrE,EACL,wBAAwB,EACxB,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CAEvC,YAAW,mBAAmB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAmB;gBAGvD,QAAQ,EAAE,QAAQ,CACd,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC,EACD,cAAc,CAAC,EAAE,cAAc,CAC3B,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,CACtC;cAmDW,oBAAoB,CAChC,KAAK,EAAE,uBAAuB,GAC1B,yBAAyB,GAAG;QACxB,2BAA2B,CAAC,EAAE,mCAAmC,CAAC;KACrE,EACL,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;CA4H5D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CreateOrganizationInputSchema, CreateOrganizationOutputSchema } from '@multitenantkit/domain-contracts/organizations';
|
|
2
2
|
import { ValidationError } from '@multitenantkit/domain-contracts/shared/errors/index';
|
|
3
|
+
import { z } from 'zod';
|
|
3
4
|
import { Result } from '../../../shared/result/Result';
|
|
4
5
|
import { BaseUseCase } from '../../../shared/use-case';
|
|
5
6
|
/**
|
|
@@ -11,19 +12,31 @@ import { BaseUseCase } from '../../../shared/use-case';
|
|
|
11
12
|
*/
|
|
12
13
|
export class CreateOrganization extends BaseUseCase {
|
|
13
14
|
customSchema;
|
|
15
|
+
membershipCustomSchema;
|
|
14
16
|
constructor(adapters, toolkitOptions) {
|
|
15
17
|
// Extract organization custom schema from toolkit options
|
|
16
18
|
const customSchema = toolkitOptions?.organizations?.customFields?.customSchema;
|
|
17
|
-
//
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
// Extract organization membership custom schema from toolkit options
|
|
20
|
+
const membershipCustomSchema = toolkitOptions?.organizationMemberships?.customFields
|
|
21
|
+
?.customSchema;
|
|
22
|
+
// Build input schema with organization custom fields and optional membership custom fields
|
|
23
|
+
let inputSchema = CreateOrganizationInputSchema;
|
|
24
|
+
if (customSchema) {
|
|
25
|
+
inputSchema = inputSchema.and(customSchema.partial());
|
|
26
|
+
}
|
|
27
|
+
if (membershipCustomSchema) {
|
|
28
|
+
inputSchema = inputSchema.and(z.object({
|
|
29
|
+
ownerMembershipCustomFields: membershipCustomSchema.partial().optional()
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
const finalInputSchema = inputSchema;
|
|
21
33
|
// Build output schema with custom fields if provided
|
|
22
34
|
const outputSchema = (customSchema
|
|
23
35
|
? CreateOrganizationOutputSchema.merge(customSchema)
|
|
24
36
|
: CreateOrganizationOutputSchema);
|
|
25
|
-
super('organization-createOrganization', adapters, toolkitOptions,
|
|
37
|
+
super('organization-createOrganization', adapters, toolkitOptions, finalInputSchema, outputSchema, 'Failed to create organization');
|
|
26
38
|
this.customSchema = customSchema;
|
|
39
|
+
this.membershipCustomSchema = membershipCustomSchema;
|
|
27
40
|
}
|
|
28
41
|
async executeBusinessLogic(input, context) {
|
|
29
42
|
// 1. Business validation - e.g., ensure no conflicting organization constraints
|
|
@@ -36,15 +49,17 @@ export class CreateOrganization extends BaseUseCase {
|
|
|
36
49
|
// 2. Generate ID and timestamp
|
|
37
50
|
const organizationId = this.adapters.system.uuid.generate();
|
|
38
51
|
const now = this.adapters.system.clock.now();
|
|
39
|
-
// 3.
|
|
52
|
+
// 3. Extract membership custom fields from input (if provided)
|
|
53
|
+
const { ownerMembershipCustomFields, ...organizationInput } = input;
|
|
54
|
+
// 4. Create Organization entity
|
|
40
55
|
const organization = {
|
|
41
56
|
id: organizationId,
|
|
42
|
-
...
|
|
57
|
+
...organizationInput,
|
|
43
58
|
ownerUserId: existingUser.id,
|
|
44
59
|
createdAt: now,
|
|
45
60
|
updatedAt: now
|
|
46
61
|
};
|
|
47
|
-
//
|
|
62
|
+
// 5. Validate the organization data (base + custom)
|
|
48
63
|
const organizationSchema = this.customSchema
|
|
49
64
|
? CreateOrganizationOutputSchema.strip().and(this.customSchema.strip())
|
|
50
65
|
: CreateOrganizationOutputSchema.strip();
|
|
@@ -54,7 +69,51 @@ export class CreateOrganization extends BaseUseCase {
|
|
|
54
69
|
return Result.fail(new ValidationError(firstError.message, firstError.path.join('.')));
|
|
55
70
|
}
|
|
56
71
|
const validatedOrganization = validation.data;
|
|
57
|
-
//
|
|
72
|
+
// 6. Create owner membership with custom fields
|
|
73
|
+
const ownerMembershipBase = {
|
|
74
|
+
id: this.adapters.system.uuid.generate(),
|
|
75
|
+
organizationId: validatedOrganization.id,
|
|
76
|
+
userId: validatedOrganization.ownerUserId,
|
|
77
|
+
username: existingUser.username,
|
|
78
|
+
roleCode: 'owner',
|
|
79
|
+
invitedAt: undefined,
|
|
80
|
+
joinedAt: now,
|
|
81
|
+
leftAt: undefined,
|
|
82
|
+
deletedAt: undefined,
|
|
83
|
+
createdAt: now,
|
|
84
|
+
updatedAt: now
|
|
85
|
+
};
|
|
86
|
+
// Merge membership base fields with custom fields
|
|
87
|
+
const ownerMembership = {
|
|
88
|
+
...ownerMembershipBase,
|
|
89
|
+
...ownerMembershipCustomFields
|
|
90
|
+
};
|
|
91
|
+
// 7. Validate the membership data (base + custom) if custom schema exists
|
|
92
|
+
if (this.membershipCustomSchema) {
|
|
93
|
+
const membershipSchema = this.membershipCustomSchema
|
|
94
|
+
? z
|
|
95
|
+
.object({
|
|
96
|
+
id: z.string(),
|
|
97
|
+
organizationId: z.string(),
|
|
98
|
+
userId: z.string(),
|
|
99
|
+
username: z.string(),
|
|
100
|
+
roleCode: z.enum(['owner', 'admin', 'member']),
|
|
101
|
+
invitedAt: z.date().optional(),
|
|
102
|
+
joinedAt: z.date().optional(),
|
|
103
|
+
leftAt: z.date().optional(),
|
|
104
|
+
deletedAt: z.date().optional(),
|
|
105
|
+
createdAt: z.date(),
|
|
106
|
+
updatedAt: z.date()
|
|
107
|
+
})
|
|
108
|
+
.and(this.membershipCustomSchema)
|
|
109
|
+
: z.any();
|
|
110
|
+
const membershipValidation = membershipSchema.safeParse(ownerMembership);
|
|
111
|
+
if (!membershipValidation.success) {
|
|
112
|
+
const firstError = membershipValidation.error.errors[0];
|
|
113
|
+
return Result.fail(new ValidationError(`Owner membership validation failed: ${firstError.message}`, `ownerMembershipCustomFields.${firstError.path.join('.')}`));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// 8. Persist organization and owner membership using Unit of Work
|
|
58
117
|
const auditContext = {
|
|
59
118
|
...context,
|
|
60
119
|
organizationId: validatedOrganization.id,
|
|
@@ -68,19 +127,6 @@ export class CreateOrganization extends BaseUseCase {
|
|
|
68
127
|
try {
|
|
69
128
|
await this.adapters.persistence.uow.transaction(async (repos) => {
|
|
70
129
|
await repos.organizations.insert(validatedOrganization, auditContext);
|
|
71
|
-
const ownerMembership = {
|
|
72
|
-
id: this.adapters.system.uuid.generate(),
|
|
73
|
-
organizationId: validatedOrganization.id,
|
|
74
|
-
userId: validatedOrganization.ownerUserId,
|
|
75
|
-
username: existingUser.username,
|
|
76
|
-
roleCode: 'owner',
|
|
77
|
-
invitedAt: undefined,
|
|
78
|
-
joinedAt: now,
|
|
79
|
-
leftAt: undefined,
|
|
80
|
-
deletedAt: undefined,
|
|
81
|
-
createdAt: now,
|
|
82
|
-
updatedAt: now
|
|
83
|
-
};
|
|
84
130
|
await repos.organizationMemberships.insert(ownerMembership, membershipAuditContext);
|
|
85
131
|
});
|
|
86
132
|
}
|
|
@@ -89,7 +135,7 @@ export class CreateOrganization extends BaseUseCase {
|
|
|
89
135
|
originalError: error
|
|
90
136
|
}));
|
|
91
137
|
}
|
|
92
|
-
//
|
|
138
|
+
// 9. Return success; BaseUseCase will parse with output schema
|
|
93
139
|
return Result.ok({ ...validatedOrganization });
|
|
94
140
|
}
|
|
95
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateOrganization.js","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,6BAA6B,EAC7B,8BAA8B,EACjC,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAEH,eAAe,EAClB,MAAM,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"CreateOrganization.js","sourceRoot":"","sources":["../../../../src/organizations/use-cases/create-organization/CreateOrganization.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,10 +129,10 @@ export declare abstract class BaseUseCase<TInput, TOutput, TError extends Domain
|
|
|
129
129
|
* 3. Validate input with schema
|
|
130
130
|
* 4. afterValidation hook
|
|
131
131
|
* 5. Authorize (optional)
|
|
132
|
-
* 6. beforeExecution hook
|
|
132
|
+
* 6. beforeExecution hook
|
|
133
133
|
* 7. Execute business logic
|
|
134
|
-
* 8.
|
|
135
|
-
* 9.
|
|
134
|
+
* 8. Parse output with schema
|
|
135
|
+
* 9. onSuccess hook (errors don't fail the operation)
|
|
136
136
|
* 10. onError hook (if error occurs)
|
|
137
137
|
* 11. onAbort hook (if abort requested)
|
|
138
138
|
* 12. onFinally hook (always executes)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseUseCase.d.ts","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EAEX,gBAAgB,EAChB,cAAc,EAEd,IAAI,EACP,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,WAAW,CAC7B,MAAM,EACN,OAAO,EACP,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,aAAa,GAAG,GAAG,EACnB,yBAAyB,GAAG,GAAG,EAC/B,mCAAmC,GAAG,GAAG;IAwCrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC;IACD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS;IACf,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IApDjC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAc;IAEjC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA2B;IAE9C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAIZ;IAEP;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAc;IAEjC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGnC,WAAW,EAAE,MAAM,EACA,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,EACkB,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS,EACE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9B,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAChC,YAAY,EAAE,MAAM;IAKzC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAQhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;;;;OAOG;YACW,WAAW;IA+BzB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA6BlB;;;;;;;;;;;;;;;OAeG;cACa,qBAAqB,CACjC,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,EAAE,WAAW,CAAC,CAAC;IAoBrD;;;;;;;;;;;;;;;;OAgBG;IACU,OAAO,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseUseCase.d.ts","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EAEX,gBAAgB,EAChB,cAAc,EAEd,IAAI,EACP,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,WAAW,CAC7B,MAAM,EACN,OAAO,EACP,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,aAAa,GAAG,GAAG,EACnB,yBAAyB,GAAG,GAAG,EAC/B,mCAAmC,GAAG,GAAG;IAwCrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC;IACD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS;IACf,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IApDjC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAc;IAEjC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA2B;IAE9C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAIZ;IAEP;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAc;IAEjC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGnC,WAAW,EAAE,MAAM,EACA,QAAQ,EAAE,QAAQ,CACjC,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,EACkB,cAAc,EAC3B,cAAc,CACV,aAAa,EACb,yBAAyB,EACzB,mCAAmC,CACtC,GACD,SAAS,EACE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9B,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAChC,YAAY,EAAE,MAAM;IAKzC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAQhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;;;;OAOG;YACW,WAAW;IA+BzB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA6BlB;;;;;;;;;;;;;;;OAeG;cACa,qBAAqB,CACjC,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,EAAE,WAAW,CAAC,CAAC;IAoBrD;;;;;;;;;;;;;;;;OAgBG;IACU,OAAO,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAoKnC;;OAEG;YACW,aAAa;IAS3B;;;OAGG;cACa,SAAS,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAIrC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;YACW,iBAAiB;CAalC"}
|
|
@@ -203,10 +203,10 @@ export class BaseUseCase {
|
|
|
203
203
|
* 3. Validate input with schema
|
|
204
204
|
* 4. afterValidation hook
|
|
205
205
|
* 5. Authorize (optional)
|
|
206
|
-
* 6. beforeExecution hook
|
|
206
|
+
* 6. beforeExecution hook
|
|
207
207
|
* 7. Execute business logic
|
|
208
|
-
* 8.
|
|
209
|
-
* 9.
|
|
208
|
+
* 8. Parse output with schema
|
|
209
|
+
* 9. onSuccess hook (errors don't fail the operation)
|
|
210
210
|
* 10. onError hook (if error occurs)
|
|
211
211
|
* 11. onAbort hook (if abort requested)
|
|
212
212
|
* 12. onFinally hook (always executes)
|
|
@@ -252,15 +252,48 @@ export class BaseUseCase {
|
|
|
252
252
|
if (businessResult.isFailure) {
|
|
253
253
|
return businessResult;
|
|
254
254
|
}
|
|
255
|
-
//
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
255
|
+
// 4. Parse output FIRST - validate before declaring success
|
|
256
|
+
// This ensures onSuccess hook only runs if output is valid
|
|
257
|
+
const parsedResult = this.parseOutput(businessResult.getValue());
|
|
258
|
+
if (parsedResult.isFailure) {
|
|
259
|
+
// Output validation failed - this is a bug in the use case
|
|
260
|
+
// Don't execute onSuccess, go straight to onError path
|
|
261
|
+
return parsedResult;
|
|
262
|
+
}
|
|
263
|
+
// Store parsed output in step results
|
|
264
|
+
this.stepResults.output = parsedResult.getValue();
|
|
265
|
+
// HOOK 4: onSuccess - after validating output is correct
|
|
266
|
+
// Errors in this hook are logged but don't fail the operation
|
|
267
|
+
// The business logic succeeded, so we return success regardless
|
|
268
|
+
try {
|
|
269
|
+
await this.executeHook(hooks?.onSuccess, hookCtx, 'onSuccess');
|
|
270
|
+
}
|
|
271
|
+
catch (onSuccessError) {
|
|
272
|
+
// Log error but don't fail the result - business operation succeeded
|
|
273
|
+
console.error(`Error in onSuccess hook for ${this.useCaseName}:`, onSuccessError);
|
|
274
|
+
// Optional: notify via onError that side effect failed
|
|
275
|
+
// This allows error tracking without failing the operation
|
|
276
|
+
try {
|
|
277
|
+
if (hooks?.onError) {
|
|
278
|
+
this.logMetrics('onError', hookCtx);
|
|
279
|
+
await hooks.onError({
|
|
280
|
+
...hookCtx,
|
|
281
|
+
error: new InfrastructureError('Side effect failed in onSuccess hook', {
|
|
282
|
+
originalError: onSuccessError
|
|
283
|
+
})
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
// Silent fail - onError failed, but don't cascade
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Check if hook requested abort
|
|
259
292
|
if (this.checkAborted()) {
|
|
260
293
|
return Result.fail(new AbortedError(this.abortReason));
|
|
261
294
|
}
|
|
262
|
-
//
|
|
263
|
-
return
|
|
295
|
+
// Return successful result with parsed output
|
|
296
|
+
return parsedResult;
|
|
264
297
|
});
|
|
265
298
|
// If result is AbortedError, execute onAbort hook
|
|
266
299
|
if (result.isFailure && result.getError() instanceof AbortedError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseUseCase.js","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BaseUseCase.js","sourceRoot":"","sources":["../../../src/shared/use-case/BaseUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multitenantkit/domain",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core domain logic and use cases for MultiTenantKit - Pure business logic layer",
|
|
6
6
|
"keywords": [
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"test:coverage": "vitest run --coverage"
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
|
-
"@multitenantkit/domain-contracts": "^0.1.
|
|
74
|
+
"@multitenantkit/domain-contracts": "^0.1.2",
|
|
75
75
|
"zod": "^3.22.4"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|