變更日誌¶
所有重要的專案變更都會記錄在此檔案中。
格式基於 Keep a Changelog,並且本專案遵循 語義化版本。
[0.2.0] - 2025-07-28¶
新增¶
🧩 插件系統:
BaseRoutePlugin
基類用於創建自訂路由PluginManager
管理插件註冊和執行預設插件:create, get, update, delete, count, list
支援插件優先級和路由覆蓋
⚡ 高級查詢功能:
ListQueryParams
支援分頁、排序、時間範圍查詢ListResult
包含分頁資訊的查詢結果支援
created_by
和updated_by
用戶過濾DateTimeRange
和SortOrder
類型支援
🔧 路由配置增強:
RouteOptions
新增用於更細粒度的路由控制增強的路由配置系統
變更¶
🔄 重要 API 變更:
list_all()
方法現在支援ListQueryParams
參數進行高級查詢新增
list_with_params()
方法提供分頁結果SingleModelCRUD
建構函數新增default_values
參數SchemaAnalyzer
現在接受default_values
參數
🎯 資源名稱系統改進:
新增
ResourceNameStyle
枚舉支援不同命名風格更靈活的複數化選項
📝 更好的類型支援:
SingleModelCRUD
現在是泛型類SingleModelCRUD[T]
改進的類型註解和 IDE 支援
修復¶
🐛 修復 Pydantic v1/v2 相容性問題
🔧 改進錯誤處理和異常訊息
📦 修復序列化器的邊界情況
🎯 修復 FastAPI 路由生成的優先級問題
[0.1.0] - 2025-07-23¶
新增¶
🎉 初始版本發布
✨ 核心 CRUD 功能:
SingleModelCRUD
類,支援基本的建立、讀取、更新、刪除操作自動 ID 產生(UUID4)
資料驗證和轉換
📦 多種資料模型支援:
Python Dataclass
Pydantic 模型
TypedDict
💾 儲存後端:
MemoryStorage
:記憶體儲存,適用於開發和測試DiskStorage
:硬碟持久化儲存
🔧 多種序列化格式:
JSON(預設)
Pickle
MessagePack
🚀 FastAPI 整合:
自動產生 RESTful API 路由
OpenAPI/Swagger 文件產生
類型安全的請求/響應模型
🔄 多模型支援:
MultiModelAutoCRUD
類(後來重命名為AutoCRUD
)支援在單個應用中管理多個不同的資料模型
自動資源名稱產生(複數化)
🎯 API URL 自訂:
支援複數/單數形式選擇
完全自訂資源名稱
靈活的routing設定
📊 元資料管理:
MetadataConfig
配置自動時間戳和用戶追蹤自動添加
created_time
,updated_time
,created_by
,updated_by
可自訂欄位名稱
🔄 高級更新系統:
AdvancedUpdater
支援原子操作多種更新操作:
set_value
,list_add
,list_remove
,dict_update
防止資料競爭和不一致狀態
🏭 儲存工廠系統:
StorageFactory
抽象工廠介面DefaultStorageFactory
預設實作支援為不同資源創建獨立的儲存後端
🔧 路由配置系統:
RouteConfig
控制路由行為支援啟用/禁用特定 CRUD 操作
📋 Schema 分析器:
SchemaAnalyzer
自動分析模型結構支援預設值和必要欄位檢測
ID 欄位自動識別
✅ 全面測試覆蓋:
多個測試用例覆蓋核心功能
支援 pytest 測試框架
📚 完整文檔:
使用者指南和 API 參考
豐富的使用範例
快速入門教程
技術特性¶
dependency injection:使用
dependency-injector
進行組件管理類型提示:完整的 Python 類型註解支援
錯誤處理:自訂異常類型和錯誤處理
程式碼品質:使用 Ruff 進行程式碼檢查和格式化
靈活架構:模塊化設計,易於擴展
API 端點¶
每個註冊的模型自動產生以下 RESTful 端點:
GET /{resource}
- 列出所有專案POST /{resource}
- 建立新專案GET /{resource}/{id}
- 取得特定專案PUT /{resource}/{id}
- 更新專案DELETE /{resource}/{id}
- 刪除專案
使用範例¶
from autocrud import MultiModelAutoCRUD
from autocrud.storage import MemoryStorage
# 建立多模型 CRUD 系統
storage = MemoryStorage()
multi_crud = MultiModelAutoCRUD(storage)
# 註冊模型
multi_crud.register_model(User) # /users
multi_crud.register_model(Product, use_plural=False) # /product
# 產生 FastAPI 應用
app = multi_crud.create_fastapi_app()
支援的 Python 版本¶
Python 3.11+
主要 dependency¶
FastAPI >= 0.116.1
Pydantic >= 2.11.7
dependency-injector >= 4.48.1
msgpack >= 1.1.1
版本說明¶
版本號格式¶
主版本號:不相容的 API 變更
次版本號:向後相容的功能新增
修訂版本號:向後相容的問題修正
變更類型¶
新增:新功能
變更:現有功能的變更
棄用:即將移除的功能
移除:已移除的功能
修復:錯誤修復
安全:安全相關的變更