Giao diện
@digiforce-nc/plugin-data-source-external-postgres
Plugin kết nối PostgreSQL bên ngoài làm data source — biến bảng PostgreSQL thành collection để thao tác CRUD trực tiếp từ giao diện.
Plugin này làm gì?
Trong nhiều dự án, dữ liệu nghiệp vụ đã nằm sẵn trong PostgreSQL. Thay vì import hay duplicate, plugin-data-source-external-postgres cho phép kết nối trực tiếp đến database PostgreSQL bên ngoài, tự động phát hiện schema/bảng/cột, rồi đăng ký chúng như collection trong hệ thống.
Cơ chế hoạt động
Plugin đăng ký loại data source postgres vào data-source-manager factory. Khi admin tạo data source mới với type postgres, factory khởi tạo kết nối thông qua @digiforce-nc/database với dialect PostgreSQL.
Tính năng chính
| # | Tính năng | Mô tả |
|---|---|---|
| 1 | Kết nối PostgreSQL | Cấu hình host, port, user, password, database name |
| 2 | Auto-detect schema | Tự phát hiện bảng, cột, kiểu dữ liệu, primary key, index |
| 3 | Schema selector | Chọn PostgreSQL schema cụ thể (public, custom schema) |
| 4 | Multi-database | Kết nối nhiều PostgreSQL instance cùng lúc |
| 5 | CRUD qua UI | Thao tác dữ liệu trực tiếp từ giao diện Digiforce |
| 6 | SSL/TLS | Hỗ trợ kết nối mã hóa SSL cho môi trường production |
Cấu hình kết nối
| Tham số | Bắt buộc | Mô tả | Ví dụ |
|---|---|---|---|
host | Co | Địa chỉ server PostgreSQL | 192.168.1.100 |
port | Không | Cổng kết nối (mặc định 5432) | 5432 |
database | Co | Tên database | my_erp |
username | Co | Tên đăng nhập | readonly_user |
password | Co | Mật khẩu | *** |
schema | Không | Schema cần introspect (mặc định public) | sales |
ssl | Không | Bật SSL/TLS | true |
Kiến trúc nội bộ
| Thành phần | Vai trò |
|---|---|
| Register | Đăng ký postgres type vào factory registry khi plugin load |
| Factory | Tạo kết nối Database instance với dialect postgres |
| Introspector | Đọc information_schema để map bảng → collection, cột → field |
| Sync | Đồng bộ metadata collection vào CollectionManager |
Thành phần client
| Thành phần | Mô tả |
|---|---|
PostgresConnectionForm | Form cấu hình kết nối PostgreSQL (host, port, credentials) |
SchemaSelector | Dropdown chọn schema trong PostgreSQL |
ConnectionTest | Nút test kết nối trước khi lưu |
ExternalCollectionList | Danh sách bảng được map thành collection |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/server | Server framework |
@digiforce-nc/database | Database abstraction layer (postgres dialect) |
@digiforce-nc/client | Client UI framework |
@digiforce-nc/data-source-manager | Registry quản lý data source |
pg | PostgreSQL native driver |
pg-hstore | Serialize/deserialize hstore type |
Lưu ý triển khai
- PostgreSQL bên ngoài cần cho phép kết nối từ IP của server Digiforce
- Nên tạo user read-only nếu chỉ cần xem dữ liệu
- Với database lớn, introspect lần đầu có thể mất vài giây
- Hỗ trợ PostgreSQL phiên bản 10 trở lên