@mbc-cqrs-serverless/master 1.0.14 → 1.0.15
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/README.md +183 -5
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|

|
|
2
2
|
|
|
3
|
-
# MBC CQRS
|
|
3
|
+
# MBC CQRS Serverless Framework - Master Package
|
|
4
4
|
|
|
5
5
|
## Description
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The Master package provides master data and hierarchical settings management for multi-tenant CQRS applications. It offers:
|
|
8
8
|
|
|
9
|
-
- **Master Data Service**:
|
|
10
|
-
- **Master Setting Service**:
|
|
9
|
+
- **Master Data Service**: CRUD operations for master data entities with tenant isolation
|
|
10
|
+
- **Master Setting Service**: Hierarchical settings across user, group, tenant, and common levels
|
|
11
|
+
- **Master Copy Service**: Synchronization with RDS for complex queries
|
|
11
12
|
|
|
12
13
|
## Installation
|
|
13
14
|
|
|
@@ -15,11 +16,188 @@ This package manages master data and hierarchical settings in a multi-tenant CQR
|
|
|
15
16
|
npm install @mbc-cqrs-serverless/master
|
|
16
17
|
```
|
|
17
18
|
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
### Basic Setup
|
|
22
|
+
|
|
23
|
+
Import and configure the master module in your application:
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { MasterModule } from '@mbc-cqrs-serverless/master';
|
|
27
|
+
import { Module } from '@nestjs/common';
|
|
28
|
+
|
|
29
|
+
@Module({
|
|
30
|
+
imports: [
|
|
31
|
+
MasterModule.register({
|
|
32
|
+
tableName: 'your-master-table',
|
|
33
|
+
}),
|
|
34
|
+
],
|
|
35
|
+
})
|
|
36
|
+
export class AppModule {}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Master Data Operations
|
|
40
|
+
|
|
41
|
+
#### Create Master Data
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { MasterDataService } from '@mbc-cqrs-serverless/master';
|
|
45
|
+
|
|
46
|
+
@Injectable()
|
|
47
|
+
export class ProductService {
|
|
48
|
+
constructor(private readonly masterDataService: MasterDataService) {}
|
|
49
|
+
|
|
50
|
+
async createProduct(data: CreateProductDto) {
|
|
51
|
+
return this.masterDataService.create({
|
|
52
|
+
tenantCode: 'TENANT001',
|
|
53
|
+
typeCode: 'PRODUCT',
|
|
54
|
+
code: 'PROD-001',
|
|
55
|
+
name: data.name,
|
|
56
|
+
attributes: data.attributes,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### Query Master Data
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
async getProducts(tenantCode: string) {
|
|
66
|
+
return this.masterDataService.search({
|
|
67
|
+
tenantCode,
|
|
68
|
+
typeCode: 'PRODUCT',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async getProductByCode(tenantCode: string, code: string) {
|
|
73
|
+
return this.masterDataService.findByCode({
|
|
74
|
+
tenantCode,
|
|
75
|
+
typeCode: 'PRODUCT',
|
|
76
|
+
code,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Update Master Data
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
async updateProduct(id: string, data: UpdateProductDto) {
|
|
85
|
+
return this.masterDataService.update(id, {
|
|
86
|
+
name: data.name,
|
|
87
|
+
attributes: data.attributes,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Hierarchical Settings
|
|
93
|
+
|
|
94
|
+
The setting service supports four hierarchy levels (highest to lowest priority):
|
|
95
|
+
|
|
96
|
+
1. **User Level**: Settings specific to individual users
|
|
97
|
+
2. **Group Level**: Settings for user groups
|
|
98
|
+
3. **Tenant Level**: Settings for entire tenant
|
|
99
|
+
4. **Common Level**: Default settings for all tenants
|
|
100
|
+
|
|
101
|
+
#### Create Settings
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { MasterSettingService } from '@mbc-cqrs-serverless/master';
|
|
105
|
+
|
|
106
|
+
@Injectable()
|
|
107
|
+
export class SettingService {
|
|
108
|
+
constructor(private readonly settingService: MasterSettingService) {}
|
|
109
|
+
|
|
110
|
+
// Common setting (applies to all)
|
|
111
|
+
async createCommonSetting(key: string, value: any) {
|
|
112
|
+
return this.settingService.createCommonSetting({
|
|
113
|
+
settingCode: key,
|
|
114
|
+
value,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Tenant-specific setting
|
|
119
|
+
async createTenantSetting(tenantCode: string, key: string, value: any) {
|
|
120
|
+
return this.settingService.createTenantSetting({
|
|
121
|
+
tenantCode,
|
|
122
|
+
settingCode: key,
|
|
123
|
+
value,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// User-specific setting
|
|
128
|
+
async createUserSetting(userId: string, key: string, value: any) {
|
|
129
|
+
return this.settingService.createUserSetting({
|
|
130
|
+
userId,
|
|
131
|
+
settingCode: key,
|
|
132
|
+
value,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### Get Effective Setting
|
|
139
|
+
|
|
140
|
+
The service automatically resolves the most specific setting:
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
async getEffectiveSetting(userId: string, tenantCode: string, key: string) {
|
|
144
|
+
// Returns user setting if exists, otherwise group, tenant, or common
|
|
145
|
+
return this.settingService.getSetting({
|
|
146
|
+
userId,
|
|
147
|
+
tenantCode,
|
|
148
|
+
settingCode: key,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### RDS Synchronization
|
|
154
|
+
|
|
155
|
+
For complex queries, sync master data to RDS:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import { MasterCopyService } from '@mbc-cqrs-serverless/master';
|
|
159
|
+
|
|
160
|
+
@Injectable()
|
|
161
|
+
export class SyncService {
|
|
162
|
+
constructor(private readonly masterCopyService: MasterCopyService) {}
|
|
163
|
+
|
|
164
|
+
async syncToRds(tenantCode: string) {
|
|
165
|
+
return this.masterCopyService.syncMasterData({
|
|
166
|
+
tenantCode,
|
|
167
|
+
typeCode: 'PRODUCT',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## API Reference
|
|
174
|
+
|
|
175
|
+
### MasterDataService
|
|
176
|
+
|
|
177
|
+
| Method | Description |
|
|
178
|
+
|--------|-------------|
|
|
179
|
+
| `create(dto)` | Create new master data |
|
|
180
|
+
| `update(id, dto)` | Update existing master data |
|
|
181
|
+
| `delete(id)` | Delete master data |
|
|
182
|
+
| `findByCode(params)` | Find by tenant, type, and code |
|
|
183
|
+
| `search(params)` | Search with filters |
|
|
184
|
+
|
|
185
|
+
### MasterSettingService
|
|
186
|
+
|
|
187
|
+
| Method | Description |
|
|
188
|
+
|--------|-------------|
|
|
189
|
+
| `createCommonSetting(dto)` | Create common-level setting |
|
|
190
|
+
| `createTenantSetting(dto)` | Create tenant-level setting |
|
|
191
|
+
| `createGroupSetting(dto)` | Create group-level setting |
|
|
192
|
+
| `createUserSetting(dto)` | Create user-level setting |
|
|
193
|
+
| `getSetting(params)` | Get effective setting value |
|
|
194
|
+
| `updateSetting(id, dto)` | Update existing setting |
|
|
195
|
+
|
|
18
196
|
## Documentation
|
|
19
197
|
|
|
20
198
|
Visit https://mbc-cqrs-serverless.mbc-net.com/ to view the full documentation.
|
|
21
199
|
|
|
22
200
|
## License
|
|
23
201
|
|
|
24
|
-
Copyright © 2024, Murakami Business Consulting, Inc. https://www.mbc-net.com/
|
|
202
|
+
Copyright © 2024, Murakami Business Consulting, Inc. https://www.mbc-net.com/
|
|
25
203
|
This project and sub projects are under the MIT License.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mbc-cqrs-serverless/master",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.15",
|
|
4
4
|
"description": " Master data management such as setting, sequence, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mbc",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"access": "public"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@mbc-cqrs-serverless/core": "1.0.
|
|
47
|
-
"@mbc-cqrs-serverless/sequence": "1.0.
|
|
48
|
-
"@mbc-cqrs-serverless/task": "1.0.
|
|
46
|
+
"@mbc-cqrs-serverless/core": "1.0.15",
|
|
47
|
+
"@mbc-cqrs-serverless/sequence": "1.0.15",
|
|
48
|
+
"@mbc-cqrs-serverless/task": "1.0.15",
|
|
49
49
|
"ulid": "^2.3.0"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "69711a8dab16182f8ef59687ee5a7d6d3d99932b"
|
|
52
52
|
}
|