Bỏ qua, đến nội dung

@digiforce-nc/plugin-data-source-manager

Plugin quản lý nhiều data source — kết nối, cấu hình, và phân quyền cho các nguồn dữ liệu bên ngoài (PostgreSQL, MySQL, REST API...).

Plugin này làm gì?

Nếu plugin-data-source-main quản lý data source chính (database nội bộ), thì plugin-data-source-managertổng đài quản lý tất cả data source — cả nội bộ lẫn bên ngoài. Nó cho phép kết nối đến nhiều database/API khác nhau, mỗi cái có collection riêng, ACL riêng.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Kết nốiLưu cấu hình kết nối, test connection, load tables từ database ngoài
2Quản lý schemaOverlay collections/fields lên data source ngoài (tên hiển thị, UI schema)
3Phân quyềnACL riêng cho mỗi data source (roles → resources → actions → scopes)

Kiến trúc

Tổng quan

Thành phầnVai trò
DataSource FactoryTạo DataSource instance theo type (postgres, mysql, rest-api...)
LoaderLoad data source vào app.dataSourceManager, quản lý trạng thái (loading/loaded/failed)
Per-DS ACL syncMỗi data source có ACL riêng, đồng bộ role/resource/action/scope
Schema overlayCho phép override tên, UI schema cho collection/field từ nguồn ngoài

Luồng thêm data source mới

API endpoints

Data source management

EndpointMô tả
dataSources:listDanh sách data source (kèm status)
dataSources:listEnabledData source đang bật (không gồm main)
dataSources:createTạo kết nối mới
dataSources:updateCập nhật cấu hình
dataSources:destroyXóa kết nối (không xóa được main)
dataSources:testConnectionTest kết nối trước khi lưu
dataSources:refreshReload data source
dataSources:readTablesĐọc danh sách bảng từ DB ngoài
dataSources:loadTablesLoad bảng cụ thể vào collection

Collections & fields overlay

EndpointMô tả
dataSources.collections:listDanh sách collection của data source
dataSources.collections:updateOverride metadata collection
dataSourcesCollections.fields:listDanh sách field
dataSourcesCollections.fields:createThêm field overlay
dataSourcesCollections.fields:updateSửa field overlay
dataSourcesCollections.fields:destroyXóa field overlay

Per-datasource ACL

EndpointMô tả
dataSources.roles:getLấy cấu hình role cho data source
dataSources.roles:updateCập nhật strategy role cho data source
roles.dataSourceResources:createGán permission resource cho role
roles.dataSourceResources:updateCập nhật permission
roles.dataSourcesCollections:listDanh sách collection kèm trạng thái permission

Database

BảngChứa gì
dataSourcesKết nối (key, type, options, enabled, fixed)
dataSourcesCollectionsMetadata overlay collection (tên, options)
dataSourcesFieldsMetadata overlay field (interface, UI schema)
dataSourcesRolesStrategy role per data source
dataSourcesRolesResourcesPermission resource per role per data source
dataSourcesRolesResourcesActionsAction permission + fields + scope
dataSourcesRolesResourcesScopesNamed scope per data source

Trạng thái data source

Plugin theo dõi trạng thái mỗi data source:

StatusÝ nghĩa
loadingĐang kết nối và load schema
loadedSẵn sàng sử dụng
failedKết nối lỗi (xem dataSourceErrors)
reloadingĐang reload (sau khi cập nhật cấu hình)

Mở rộng loại data source

Plugin bên ngoài đăng ký driver:

typescript
// Ví dụ: plugin-data-source-external-postgres
this.app.dataSourceManager.factory.register('postgres', PostgresDataSource);

Các driver có sẵn: plugin-data-source-external-postgres, plugin-data-source-external-mysql, plugin-data-source-external-mssql, plugin-data-source-external-oracle, plugin-data-source-external-mariadb, plugin-data-source-rest-api.

Thành phần client

Thành phầnMô tả
DatabaseConnectionManagerTrang quản lý data source (Settings → Data sources)
MainDataSourceManagerQuản lý data source chính
CollectionManagerPageQuản lý collection trong data source
PermissionManagerCấu hình ACL per data source
DatabaseConnectionProviderContext provider cho thông tin kết nối

Dependencies

PackageVai trò
@digiforce-nc/serverServer framework
@digiforce-nc/clientClient framework
@digiforce-nc/plugin-aclACL models (RoleResourceModel) + mergeRole

Mục lục chi tiết

  • Kiến trúc — DataSource lifecycle, factory pattern, per-DS ACL
  • API reference — DataSources CRUD, remote collections/fields, roles resources
  • Database schema — ER diagram, 7 bảng
  • FAQ — Câu hỏi thường gặp