@gennext/lb-infra 0.0.9 → 0.0.10
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 +146 -0
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# @gennext/lb-infra
|
|
2
|
+
|
|
3
|
+
`@gennext/lb-infra` là bộ khung cơ sở (infrastructure framework) được phát triển bởi Gennex Technology dựa trên LoopBack 4. Thư viện này cung cấp các công cụ, tiện ích và các lớp cơ sở giúp tăng tốc độ phát triển các ứng dụng backend một cách nhất quán và bảo mật.
|
|
4
|
+
|
|
5
|
+
## Tính năng chính
|
|
6
|
+
|
|
7
|
+
- ✅ **Enhanced Logger**: Hệ thống logging mạnh mẽ hỗ trợ ghi log truy cập HTTP, ẩn thông tin nhạy cảm (data masking), theo dõi Request ID và đo lường hiệu suất.
|
|
8
|
+
- ✅ **Base Models & Datasources**: Cung cấp các lớp cơ sở như `BaseEntity`, `BaseDataSource` giúp chuẩn hóa cấu trúc dữ liệu và kết nối DB.
|
|
9
|
+
- ✅ **Datasources**: Hỗ trợ sẵn các cấu hình và lớp kết nối cho PostgreSQL và Redis.
|
|
10
|
+
- ✅ **Redis Helpers**: Tiện ích giúp tương tác với Redis một cách dễ dàng và hiệu quả.
|
|
11
|
+
- ✅ **Common Utilities**: Tập hợp các hàm tiện ích cho Crypto, Date, Error, Promises, Query Builder, URL, v.v.
|
|
12
|
+
- ✅ **LoopBack 4 Overrides**: Re-export và tùy chỉnh các module cốt lõi của LoopBack 4 (@lb/auth, @lb/core, @lb/rest, @lb/repo).
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Cài đặt
|
|
17
|
+
|
|
18
|
+
Sử dụng `bun` hoặc `npm`/`yarn`:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
bun add @gennext/lb-infra
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Hướng dẫn sử dụng
|
|
27
|
+
|
|
28
|
+
### 1. Cấu hình Logger
|
|
29
|
+
|
|
30
|
+
Hệ thống logger hỗ trợ hai chế độ: `legacy` (tương thích ngược) và `modern`. Bạn nên cấu hình logger ngay khi khởi tạo ứng dụng.
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { LoggerFactory } from '@gennext/lb-infra';
|
|
34
|
+
|
|
35
|
+
// Cấu hình toàn cục (thực hiện một lần tại entry point)
|
|
36
|
+
LoggerFactory.config({
|
|
37
|
+
mode: 'modern',
|
|
38
|
+
defaultDataMasking: {
|
|
39
|
+
useMaskdataLib: true,
|
|
40
|
+
maskdataOptions: {
|
|
41
|
+
genericStrings: [
|
|
42
|
+
{
|
|
43
|
+
config: { maskWith: '*', fixedOutputLength: 8 },
|
|
44
|
+
fields: ['*password', '*secret', '*token'],
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
defaultRequestIDSystem: 'asyncLocalStorage',
|
|
50
|
+
defaultLogFormat: 'modern',
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const logger = LoggerFactory.getLogger(['UserModule']);
|
|
54
|
+
logger.info('Ứng dụng đã khởi chạy thành công');
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. Sử dụng Base Model
|
|
58
|
+
|
|
59
|
+
Kế thừa các lớp cơ sở để chuẩn hóa các Entity trong LoopBack 4.
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { BaseNumberIdEntity } from '@gennext/lb-infra';
|
|
63
|
+
import { property } from '@loopback/repository';
|
|
64
|
+
|
|
65
|
+
export class User extends BaseNumberIdEntity {
|
|
66
|
+
@property({ type: 'string', required: true })
|
|
67
|
+
username: string;
|
|
68
|
+
|
|
69
|
+
@property({ type: 'string' })
|
|
70
|
+
email?: string;
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 3. Kết nối PostgreSQL
|
|
75
|
+
|
|
76
|
+
`PostgresDataSource` tự động đọc cấu hình từ biến môi trường.
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import { PostgresDataSource } from '@gennext/lb-infra';
|
|
80
|
+
|
|
81
|
+
// Tự động kết nối dựa trên APP_ENV_POSTGRES_* env
|
|
82
|
+
const dataSource = new PostgresDataSource();
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 4. Sử dụng Redis Helper
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { RedisHelper } from '@gennext/lb-infra';
|
|
89
|
+
|
|
90
|
+
const redis = new RedisHelper({
|
|
91
|
+
name: 'my-redis',
|
|
92
|
+
host: 'localhost',
|
|
93
|
+
port: 6379,
|
|
94
|
+
password: 'your-password'
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
await redis.set('key', 'value');
|
|
98
|
+
const val = await redis.get('key');
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 5. Sử dụng Common Utilities
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { cryptoUtility, dateUtility, queryUtility } from '@gennext/lb-infra';
|
|
105
|
+
|
|
106
|
+
// Crypto
|
|
107
|
+
const hash = cryptoUtility.md5('password');
|
|
108
|
+
|
|
109
|
+
// Date
|
|
110
|
+
const now = dateUtility.now();
|
|
111
|
+
|
|
112
|
+
// Query Utility
|
|
113
|
+
const tableDef = queryUtility.getTableDefinition({ model: User });
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Cấu hình Biến môi trường (Environment Variables)
|
|
119
|
+
|
|
120
|
+
Thư viện hỗ trợ các biến môi trường sau để cấu hình Datasource:
|
|
121
|
+
|
|
122
|
+
### PostgreSQL
|
|
123
|
+
- `APP_ENV_POSTGRES_HOST`: Host của DB (mặc định: `0.0.0.0`)
|
|
124
|
+
- `APP_ENV_POSTGRES_PORT`: Port (mặc định: `5432`)
|
|
125
|
+
- `APP_ENV_POSTGRES_USERNAME`: Username (mặc định: `postgres`)
|
|
126
|
+
- `APP_ENV_POSTGRES_PASSWORD`: Password (mặc định: `password`)
|
|
127
|
+
- `APP_ENV_POSTGRES_DATABASE`: Database name (mặc định: `postgres`)
|
|
128
|
+
|
|
129
|
+
### Logger
|
|
130
|
+
- `APP_ENV_ENABLE_ACCESS_LOG`: Bật/tắt log truy cập (true/false)
|
|
131
|
+
- `APP_ENV_LOG_FORMAT`: Định dạng log (`legacy` hoặc `modern`)
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Tài liệu chi tiết
|
|
136
|
+
|
|
137
|
+
Xem thêm các hướng dẫn chi tiết tại thư mục `docs/`:
|
|
138
|
+
|
|
139
|
+
- [Cấu hình hệ thống Logger](./docs/CONFIG_USAGE.md)
|
|
140
|
+
- [Hướng dẫn Logger nâng cao](./docs/ENHANCED_LOGGER_USAGE.md)
|
|
141
|
+
- [Chi tiết về infra](./docs/lb-infra.md)
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Liên hệ
|
|
146
|
+
**Gennex Technology Team**
|