:::mermaid
flowchart TD
A["🔵 Bắt đầu: execute_sql"] --> B["Nhận câu lệnh SQL"]
B --> C["Lấy SQL Driver"]
C --> D{"Chế độ truy cập?"}
D -->|"Không giới hạn"| E["Cho phép tất cả SQL:<br/>SELECT, INSERT, UPDATE, DELETE, DDL"]
D -->|"Giới hạn"| F["Chỉ cho phép SELECT"]
E --> G["Thực thi SQL"]
F --> H{"Là câu SELECT?"}
H -->|"Có"| G
H -->|"Không"| I["Trả về lỗi:<br/>Chỉ SELECT được phép trong chế độ giới hạn"]
G --> J{"Thực thi thành công?"}
J -->|"Có"| K{"Có kết quả?"}
J -->|"Không"| L["Trả về lỗi<br/>với chi tiết lỗi"]
K -->|"Có"| M["Định dạng Result Set<br/>dạng Table/JSON"]
K -->|"Không"| N["Trả về số Rows bị ảnh hưởng"]
M --> O["Trả về kết quả"]
N --> O
O --> P["🔴 Kết thúc"]
I --> P
L --> P
style A fill:#4CAF50,color:white
style P fill:#f44336,color:white
style D fill:#2196F3,color:white
style H fill:#FF9800,color:white
style J fill:#FF9800,color:white
style K fill:#FF9800,color:white