Kiến trúc
Hướng dẫn này giải thích về kiến trúc, các mẫu thiết kế và cách các thành phần của TablePro hoạt động cùng nhau.Tổng quan
TablePro được xây dựng với:- SwiftUI cho giao diện người dùng
- AppKit cho tích hợp macOS cấp thấp
- Swift Concurrency (async/await, actors) cho các thao tác đồng thời
- Thư viện database native cho kết nối database
Dependencies
TablePro sử dụng Swift Package Manager (SPM) cho các dependencies bên thứ ba:| Package | Phiên bản | Mục đích |
|---|---|---|
| CodeEditSourceEditor | 0.15.2+ | Component code editor dựa trên tree-sitter cho trình soạn thảo SQL |
| Sparkle | 2.x | Framework cập nhật tự động với chữ ký EdDSA |
CodeEditSourceEditor đi kèm một plugin SwiftLint yêu cầu
-skipPackagePluginValidation cho CLI builds. Xem hướng dẫn Build để biết chi tiết.Cấu trúc thư mục
TablePro
Models
Views
ViewModels
Core
Extensions
Theme
Resources
Các mẫu thiết kế
Kiến trúc MVVM
TablePro sử dụng mô hình Model-View-ViewModel (MVVM): Models: Cấu trúc dữ liệu thuần túy (structs, enums)Thiết kế hướng Protocol
Database drivers tuân theo một protocol:Actor Isolation
Các thao tác đồng thời sử dụng Swift actors:Factory Pattern
Tạo driver sử dụng factory:Các thành phần chính
DatabaseManager
Bộ quản lý trung tâm cho các thao tác database:- Quản lý các session đang hoạt động
- Điều phối kết nối/ngắt kết nối
- Xử lý vòng đời SSH tunnel
- Công bố thay đổi trạng thái cho UI
Database Drivers
Mỗi driver đóng gói logic đặc thù cho database:| Driver | Library | Protocol |
|---|---|---|
| MySQLDriver | libmariadb | MySQL wire protocol |
| PostgreSQLDriver | libpq | PostgreSQL protocol |
| SQLiteDriver | Built-in SQLite3 | File-based |
Autocomplete Engine
Hệ thống autocomplete:- CompletionEngine: Điểm vào chính
- SQLContextAnalyzer: Phân tích ngữ cảnh truy vấn
- SQLSchemaProvider: Cung cấp thông tin schema
- SQLKeywords: Định nghĩa từ khóa SQL
SSH Tunnel Manager
Quản lý SSH tunnels như một actor:- Chuyển tiếp port qua
sshhệ thống - Xác thực bằng password và key
- Giám sát trạng thái
- Tự động dọn dẹp
Luồng dữ liệu
Luồng kết nối
Luồng thực thi truy vấn
Quản lý trạng thái
Published Properties
Trạng thái UI được quản lý với@Published:
App Storage
Settings sử dụng@AppStorage để lưu trữ:
Environment
Trạng thái chia sẻ qua SwiftUI environment:Xử lý lỗi
Driver Errors
Mỗi driver định nghĩa các lỗi cụ thể:Error Propagation
Lỗi được truyền lên qua async/await:Testing
Unit Tests
Tests nằm trongTableProTests/:
