API 參考¶
這裡包含 AutoCRUD 所有類和函數的詳細 API 文檔。
核心模組¶
SingleModelCRUD 類¶
單個模型的 CRUD 操作核心類,支援泛型和高級功能。
- class autocrud.core.SingleModelCRUD(model, storage, resource_name, id_generator=None, metadata_config=None, default_values=None)[原始碼]¶
基礎類別:
Generic
[T
]自動 CRUD 系統核心類
- __init__(model, storage, resource_name, id_generator=None, metadata_config=None, default_values=None)[原始碼]¶
- advanced_update(resource_id, update_data)[原始碼]¶
使用 Advanced Updater 進行細部更新
- 回傳型別:
Optional
[Dict
[str
,Any
]]
- create_fastapi_app(route_config=None, **kwargs)¶
便利方法:直接從 CRUD 實例創建 FastAPI 應用
- 回傳型別:
FastAPI
- create_router(route_config=None, prefix='', tags=None, dependencies=None, responses=None, **kwargs)¶
便利方法:直接從 CRUD 實例創建 APIRouter
- 回傳型別:
APIRouter
AutoCRUD 類(多模型)¶
支援多個模型的 AutoCRUD 系統,提供統一的管理介面。
- class autocrud.multi_model.AutoCRUD(storage_factory=None, metadata_config=None, id_generator=None, use_plural=True, resource_name_style=ResourceNameStyle.SNAKE)[原始碼]¶
基礎類別:
object
支持多個模型的 AutoCRUD 系統
- __init__(storage_factory=None, metadata_config=None, id_generator=None, use_plural=True, resource_name_style=ResourceNameStyle.SNAKE)[原始碼]¶
初始化多模型 CRUD 系統
- 參數:
storage_factory (
Optional
[StorageFactory
]) -- 存儲工廠,用於為每個資源創建獨立的存儲後端 如果為 None,將使用默認的內存存儲工廠metadata_config (
Optional
[MetadataConfig
]) -- 預設的 metadata 配置,在 register_model 時可以被覆蓋id_generator (
Optional
[callable
]) -- 預設的 ID 生成器,在 register_model 時可以被覆蓋use_plural (
bool
) -- 預設是否使用複數形式,在 register_model 時可以被覆蓋resource_name_style (
ResourceNameStyle
) -- 資源名稱命名風格 (snake/camel/dash)
- register_model(model, resource_name=None, storage=None, id_generator=None, metadata_config=None, use_plural=None, resource_name_style=None, default_values=None)[原始碼]¶
註冊一個模型
- 參數:
model (
Type
[TypeVar
(T
)]) -- 要註冊的模型類resource_name (
Optional
[str
]) -- 資源名稱,如果為 None 則自動生成storage (
Optional
[Storage
]) -- 該資源專用的存儲後端,如果為 None 則使用 storage_factory 創建id_generator (
Optional
[callable
]) -- ID 生成器函數,如果為 None 則使用預設值metadata_config (
Optional
[MetadataConfig
]) -- metadata 配置,如果為 None 則使用預設值use_plural (
Optional
[bool
]) -- 是否使用複數形式,如果為 None 則使用預設值,僅在 resource_name 為 None 時生效resource_name_style (
Optional
[ResourceNameStyle
]) -- 資源名稱命名風格,如果為 None 則使用預設值,僅在 resource_name 為 None 時生效default_values (
Optional
[Dict
[str
,Any
]]) -- 預設值字典,對於 TypedDict 特別有用,可以讓必填欄位變成選填
- 回傳型別:
SingleModelCRUD
[TypeVar
(T
)]- 回傳:
創建的 SingleModelCRUD 實例
- get_model_by_class(model_class)[原始碼]¶
根據 model class 獲取模型類
- 參數:
model_class (
Type
) -- 要查找的模型類- 回傳型別:
Type
- 回傳:
模型類(其實就是輸入的 model_class)
- 引發:
ValueError -- 如果模型未註冊
ValueError -- 如果模型註冊了多次(有多個不同的 resource_name)
- get_crud_by_class(model_class)[原始碼]¶
根據 model class 獲取 CRUD 實例
- 參數:
model_class (
Type
) -- 要查找的模型類- 回傳型別:
- 回傳:
對應的 SingleModelCRUD 實例
- 引發:
ValueError -- 如果模型未註冊
ValueError -- 如果模型註冊了多次(有多個不同的 resource_name)
- get_storage_by_class(model_class)[原始碼]¶
根據 model class 獲取存儲後端
- 參數:
model_class (
Type
) -- 要查找的模型類- 回傳型別:
- 回傳:
對應的 Storage 實例
- 引發:
ValueError -- 如果模型未註冊
ValueError -- 如果模型註冊了多次(有多個不同的 resource_name)
- get_resource_names_by_class(model_class)[原始碼]¶
獲取指定模型類對應的所有 resource names
- 參數:
model_class (
Type
) -- 要查找的模型類- 回傳型別:
List
[str
]- 回傳:
該模型類對應的所有 resource names
- 引發:
ValueError -- 如果模型未註冊
- create_router(prefix='', route_config=None)[原始碼]¶
創建包含所有註冊模型路由的 APIRouter
- 參數:
prefix (
str
) -- 路由前綴route_config (
Optional
[RouteConfig
]) -- 路由配置,控制哪些路由要啟用
- 回傳型別:
APIRouter
- 回傳:
配置好的 APIRouter
- create_fastapi_app(title='Multi-Model CRUD API', description='自動生成的多模型 CRUD API', version='1.0.0', prefix='/api/v1', route_config=None)[原始碼]¶
創建包含所有註冊模型路由的 FastAPI 應用
- 參數:
title (
str
) -- API 標題description (
str
) -- API 描述version (
str
) -- API 版本prefix (
str
) -- 路由前綴route_config (
Optional
[RouteConfig
]) -- 路由配置,控制哪些路由要啟用
- 回傳型別:
FastAPI
- 回傳:
配置好的 FastAPI 應用
- advanced_update(resource_name, resource_id, update_data)[原始碼]¶
使用 Advanced Updater 更新指定資源的項目
- 回傳型別:
Optional
[Dict
[str
,Any
]]
ResourceNameStyle 枚舉¶
資源名稱命名風格枚舉。
儲存後端¶
Storage 抽象基類¶
MemoryStorage¶
記憶體儲存後端,適用於開發和測試。
DiskStorage¶
硬碟儲存後端,支援持久化和多種序列化格式。
儲存工廠¶
StorageFactory¶
- class autocrud.storage_factory.StorageFactory(storage_type=<class 'autocrud.storage.MemoryStorage'>, storage_config=None, custom_factory=None)[原始碼]¶
基礎類別:
object
存儲工廠類,用於為不同資源創建獨立的存儲後端
DefaultStorageFactory¶
- class autocrud.storage_factory.DefaultStorageFactory[原始碼]¶
基礎類別:
object
默認存儲工廠的便利類
序列化器¶
SerializerFactory¶
序列化工廠,支援多種序列化格式。
FastAPI 產生器¶
FastAPIGenerator¶
FastAPI 應用程式生成器。
- class autocrud.fastapi_generator.FastAPIGenerator(crud, route_config=None)[原始碼]¶
基礎類別:
object
FastAPI 路由生成器
- property request_model: Type[BaseModel]¶
生成請求模型(用於 POST/PUT)
- property response_model: Type[BaseModel]¶
生成響應模型(用於 GET)
- create_router(prefix='', tags=None, dependencies=None, responses=None, route_config=None, **kwargs)[原始碼]¶
創建並返回包含 CRUD 路由的 APIRouter
- 參數:
prefix (
str
) -- 路由前綴tags (
Optional
[list
]) -- OpenAPI 標籤dependencies (
Optional
[list
]) -- 依賴注入列表responses (
Optional
[dict
]) -- 響應模型定義route_config (
Optional
[RouteConfig
]) -- 路由配置,控制哪些路由要啟用**kwargs -- 其他 APIRouter 參數
- 回傳型別:
APIRouter
模型轉換器¶
ModelConverter¶
模型轉換器,支援多種資料模型格式。
元資料配置¶
MetadataConfig¶
元資料配置類,用於設定時間戳和用戶追蹤。
- class autocrud.metadata.MetadataConfig(id_field='id', enable_timestamps=False, created_time_field='created_time', updated_time_field='updated_time', enable_user_tracking=False, created_by_field='created_by', updated_by_field='updated_by', get_current_time=None, get_current_user=None)[原始碼]¶
基礎類別:
object
Configuration for metadata fields in CRUD operations
-
id_field:
str
= 'id'¶
-
enable_timestamps:
bool
= False¶
-
created_time_field:
Optional
[str
] = 'created_time'¶
-
updated_time_field:
Optional
[str
] = 'updated_time'¶
-
enable_user_tracking:
bool
= False¶
-
created_by_field:
Optional
[str
] = 'created_by'¶
-
updated_by_field:
Optional
[str
] = 'updated_by'¶
-
get_current_time:
Optional
[Callable
[[],Any
]] = None¶
-
get_current_user:
Optional
[Callable
[[],Any
]] = None¶
- classmethod with_timestamps(created_time_field='created_time', updated_time_field='updated_time', get_current_time=None, **kwargs)[原始碼]¶
Create config with timestamp tracking enabled
- 回傳型別:
- classmethod with_user_tracking(created_by_field='created_by', updated_by_field='updated_by', get_current_user=None, **kwargs)[原始碼]¶
Create config with user tracking enabled
- 回傳型別:
- classmethod with_full_tracking(created_time_field='created_time', updated_time_field='updated_time', created_by_field='created_by', updated_by_field='updated_by', get_current_time=None, get_current_user=None, **kwargs)[原始碼]¶
Create config with both timestamp and user tracking enabled
- 回傳型別:
- get_metadata_fields()[原始碼]¶
Get all metadata field names and their enabled status
- 回傳型別:
Dict
[str
,bool
]
- get_create_excluded_fields()[原始碼]¶
Get fields that should be excluded from create request body
- 回傳型別:
set
[str
]
- get_update_excluded_fields()[原始碼]¶
Get fields that should be excluded from update request body
- 回傳型別:
set
[str
]
- __init__(id_field='id', enable_timestamps=False, created_time_field='created_time', updated_time_field='updated_time', enable_user_tracking=False, created_by_field='created_by', updated_by_field='updated_by', get_current_time=None, get_current_user=None)¶
-
id_field:
查詢參數和結果¶
ListQueryParams¶
列表查詢參數。
- class autocrud.list_params.ListQueryParams(page=1, page_size=20, created_by_filter=None, updated_by_filter=None, created_time_range=None, updated_time_range=None, sort_by=None, sort_order=SortOrder.DESC)[原始碼]¶
基礎類別:
object
列表查詢參數
-
page:
int
= 1¶
-
page_size:
int
= 20¶
-
created_by_filter:
Optional
[List
[str
]] = None¶
-
updated_by_filter:
Optional
[List
[str
]] = None¶
-
created_time_range:
Optional
[DateTimeRange
] = None¶
-
updated_time_range:
Optional
[DateTimeRange
] = None¶
-
sort_by:
Optional
[str
] = None¶
- __init__(page=1, page_size=20, created_by_filter=None, updated_by_filter=None, created_time_range=None, updated_time_range=None, sort_by=None, sort_order=SortOrder.DESC)¶
-
page:
ListResult¶
列表查詢結果。
- class autocrud.list_params.ListResult(items, total, page, page_size, total_pages, has_next, has_prev)[原始碼]¶
基礎類別:
object
列表查詢結果
-
items:
List
[Dict
[str
,Any
]]¶
-
total:
int
¶
-
page:
int
¶
-
page_size:
int
¶
-
total_pages:
int
¶
-
has_next:
bool
¶
-
has_prev:
bool
¶
- __init__(items, total, page, page_size, total_pages, has_next, has_prev)¶
-
items:
SortOrder¶
排序順序枚舉。
DateTimeRange¶
日期時間範圍查詢。
插件系統¶
BaseRoutePlugin¶
路由插件基類。
PluginManager¶
插件管理器。
- class autocrud.plugin_system.PluginManager[原始碼]¶
基礎類別:
object
Plugin manager for managing and executing route plugins.
- register_plugin(plugin, is_default=False)[原始碼]¶
註冊一個 plugin
- 參數:
plugin (
RoutePlugin
) -- 要註冊的 pluginis_default (
bool
) -- 是否為系統預設的 plugin
- get_routes_for_crud(crud)[原始碼]¶
獲取適用於指定 CRUD 的所有路由配置
- 參數:
crud (
SingleModelCRUD
) -- SingleModelCRUD 實例- 回傳:
按優先級排序的路由配置列表
- 回傳型別:
List[PluginRouteConfig]
PluginRouteConfig¶
插件路由配置。
- class autocrud.plugin_system.PluginRouteConfig(name, path, method, handler, options, response_model=None, status_code=None, summary=None, description=None, tags=None, dependencies=None, responses=None, priority=100)[原始碼]¶
基礎類別:
object
Configuration for a plugin route
-
name:
str
¶
-
path:
str
¶
-
method:
RouteMethod
¶
-
handler:
Callable
¶
-
options:
RouteOptions
¶
-
response_model:
Optional
[Any
] = None¶
-
status_code:
Optional
[int
] = None¶
-
summary:
Optional
[str
] = None¶
-
description:
Optional
[str
] = None¶
-
tags:
Optional
[List
[str
]] = None¶
-
dependencies:
Optional
[List
[Any
]] = None¶
-
responses:
Optional
[Dict
[Union
[int
,str
],Dict
[str
,Any
]]] = None¶
-
priority:
int
= 100¶
- __init__(name, path, method, handler, options, response_model=None, status_code=None, summary=None, description=None, tags=None, dependencies=None, responses=None, priority=100)¶
-
name:
RouteMethod¶
HTTP 方法枚舉。
路由配置¶
RouteConfig¶
路由配置類。
- class autocrud.route_config.RouteConfig(create=True, get=True, update=True, delete=True, list=True, count=True)[原始碼]¶
基礎類別:
object
Configuration for CRUD route generation
-
create:
Union
[bool
,RouteOptions
] = True¶
-
get:
Union
[bool
,RouteOptions
] = True¶
-
update:
Union
[bool
,RouteOptions
] = True¶
-
delete:
Union
[bool
,RouteOptions
] = True¶
-
list:
Union
[bool
,RouteOptions
] = True¶
-
count:
Union
[bool
,RouteOptions
] = True¶
- classmethod with_background_tasks(create_bg_func=None, update_bg_func=None, delete_bg_func=None, **kwargs)[原始碼]¶
Create config with background tasks for specified operations
- 回傳型別:
- to_dict()[原始碼]¶
Convert to dictionary - with backward compatibility option
- 回傳型別:
Dict
[str
,Union
[bool
,Dict
[str
,Any
]]]
- __init__(create=True, get=True, update=True, delete=True, list=True, count=True)¶
-
create:
RouteOptions¶
路由選項類。
- class autocrud.route_config.RouteOptions(enabled=True, background_task=BackgroundTaskMode.DISABLED, background_task_func=None, background_task_condition=None, custom_status_code=None, custom_dependencies=None)[原始碼]¶
基礎類別:
object
Options for individual route configuration
-
enabled:
bool
= True¶
-
background_task:
BackgroundTaskMode
= 'disabled'¶
-
background_task_func:
Optional
[Callable
] = None¶
-
background_task_condition:
Optional
[Callable
] = None¶
-
custom_status_code:
Optional
[int
] = None¶
-
custom_dependencies:
Optional
[list
] = None¶
- classmethod background_route(func, mode=BackgroundTaskMode.ENABLED, condition=None)[原始碼]¶
Create a route with background task
- 回傳型別:
- __init__(enabled=True, background_task=BackgroundTaskMode.DISABLED, background_task_func=None, background_task_condition=None, custom_status_code=None, custom_dependencies=None)¶
-
enabled:
高級更新系統¶
AdvancedUpdater¶
高級更新器,支援原子操作。
UpdateOperation¶
更新操作基類。
- class autocrud.updater.UpdateOperation(action, value=None)[原始碼]¶
基礎類別:
object
Represents a single update operation
-
action:
UpdateAction
¶
-
value:
Any
= None¶
- __init__(action, value=None)¶
-
action:
UpdateAction¶
更新動作枚舉。
Schema 分析器¶
SchemaAnalyzer¶
模型 Schema 分析器。
- class autocrud.schema_analyzer.SchemaAnalyzer(model, metadata_config=None, default_values=None)[原始碼]¶
基礎類別:
object
Analyzes user-provided schemas and generates appropriate request/response models
預設插件¶
DEFAULT_PLUGINS¶
預設插件列表,包含標準的 CRUD 操作插件。
- autocrud.default_plugins.DEFAULT_PLUGINS = [<autocrud.default_plugins.CreateRoutePlugin object>, <autocrud.default_plugins.GetRoutePlugin object>, <autocrud.default_plugins.UpdateRoutePlugin object>, <autocrud.default_plugins.DeleteRoutePlugin object>, <autocrud.default_plugins.CountRoutePlugin object>, <autocrud.default_plugins.ListRoutePlugin object>]¶
Built-in mutable sequence.
If no argument is given, the constructor creates a new empty list. The argument must be an iterable if specified.
插件實例¶
- autocrud.default_plugins.default_create_plugin = <autocrud.default_plugins.CreateRoutePlugin object>¶
Plugin for CREATE route (POST /{resource})
- autocrud.default_plugins.default_get_plugin = <autocrud.default_plugins.GetRoutePlugin object>¶
Plugin for GET route (GET /{resource}/{id})
- autocrud.default_plugins.default_update_plugin = <autocrud.default_plugins.UpdateRoutePlugin object>¶
Plugin for UPDATE route (PUT /{resource}/{id})
- autocrud.default_plugins.default_delete_plugin = <autocrud.default_plugins.DeleteRoutePlugin object>¶
Plugin for DELETE route (DELETE /{resource}/{id})
- autocrud.default_plugins.default_count_plugin = <autocrud.default_plugins.CountRoutePlugin object>¶
Plugin for COUNT route (GET /{resource}/count)
- autocrud.default_plugins.default_list_plugin = <autocrud.default_plugins.ListRoutePlugin object>¶
Plugin for LIST route (GET /{resource})