Giao diện
@digiforce-nc/plugin-collection-sql
Plugin collection từ SQL query — tạo collection ảo (virtual) dựa trên câu lệnh SQL tùy chỉnh, như database view nhưng linh hoạt hơn.
Plugin này làm gì?
Đôi khi dữ liệu cần hiển thị không khớp trực tiếp với một bảng — cần JOIN nhiều bảng, aggregation, hoặc logic phức tạp. Plugin cho phép admin viết SQL query tùy chỉnh và kết quả trở thành một collection có thể hiển thị, lọc, phân trang trên giao diện.
Cơ chế hoạt động
Tính năng chính
| # | Tính năng | Mô tả |
|---|---|---|
| 1 | Custom SQL | Viết SQL query tùy ý (SELECT, JOIN, subquery) |
| 2 | Auto-detect schema | Tự phát hiện columns và types từ query result |
| 3 | Pagination | Tự động thêm LIMIT/OFFSET cho phân trang |
| 4 | Filter injection | Bộ lọc UI được chuyển thành WHERE clause |
| 5 | Parameter binding | Hỗ trợ tham số động trong query |
| 6 | Read-only | Collection SQL chỉ đọc (không CREATE/UPDATE/DELETE) |
API endpoints
| Endpoint | Mô tả |
|---|---|
sqlCollections CRUD | Quản lý SQL collection (name, query, fields) |
sqlCollections:execute | Thực thi query và trả về dữ liệu |
sqlCollections:preview | Preview kết quả query (limit 10 rows) |
Database
| Bảng | Mô tả |
|---|---|
sqlCollections | Cấu hình SQL collection (name, query, fields) |
Thành phần client
| Thành phần | Mô tả |
|---|---|
SQLEditor | Editor viết SQL query (syntax highlighting) |
QueryPreview | Xem trước kết quả query |
SQLCollectionConfig | Form cấu hình SQL collection |
FieldOverride | Ghi đè kiểu field (tên hiển thị, format) |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/server | Server framework |
@digiforce-nc/database | Database ORM — execute raw SQL |
@digiforce-nc/client | Client UI framework |
@digiforce-nc/collection-manager | Đăng ký virtual collection |
Lưu ý triển khai
- SQL query chạy trực tiếp trên database — cần kiểm soát quyền SQL injection
- Nên giới hạn thời gian thực thi query (timeout)
- Query phức tạp trên bảng lớn có thể ảnh hưởng hiệu suất database