@mbc-cqrs-serverless/master 1.0.13 → 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.
Files changed (2) hide show
  1. package/README.md +183 -5
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -1,13 +1,14 @@
1
1
  ![MBC CQRS serverless framework](https://mbc-cqrs-serverless.mbc-net.com/img/mbc-cqrs-serverless.png)
2
2
 
3
- # MBC CQRS serverless framework Master Service package
3
+ # MBC CQRS Serverless Framework - Master Package
4
4
 
5
5
  ## Description
6
6
 
7
- This package manages master data and hierarchical settings in a multi-tenant CQRS architecture. It provides two main components:
7
+ The Master package provides master data and hierarchical settings management for multi-tenant CQRS applications. It offers:
8
8
 
9
- - **Master Data Service**: Implements CRUD operations for master data entities with support for tenant boundaries
10
- - **Master Setting Service**: Manages hierarchical settings across user, group, tenant, and common levels
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.13",
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.13",
47
- "@mbc-cqrs-serverless/sequence": "1.0.13",
48
- "@mbc-cqrs-serverless/task": "1.0.13",
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": "1cc4b77841774a1b1813b0d687b18b4f5d21855b"
51
+ "gitHead": "69711a8dab16182f8ef59687ee5a7d6d3d99932b"
52
52
  }