fastgenerateapi 1.1.16__tar.gz → 1.1.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of fastgenerateapi might be problematic. Click here for more details.
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/PKG-INFO +1 -1
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/__version__.py +1 -1
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/get_all_view.py +4 -1
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/get_one_view.py +4 -1
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/json_encoders.py +2 -1
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +2 -2
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/__init__.py +0 -2
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/all_settings.py +45 -9
- fastgenerateapi-1.1.20/fastgenerateapi/settings/etcd_settings.py +32 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi.egg-info/PKG-INFO +1 -1
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi.egg-info/SOURCES.txt +1 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/LICENSE +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/README.md +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/api_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/base_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/create_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/delete_filter_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/delete_tree_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/delete_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/get_relation_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/get_tree_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/get_mixin.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/sql_get_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/switch_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/update_relation_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/update_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/cache/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/cache/cache_decorator.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/cache/key_builder.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/channel/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/channel/connection_manager.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/channel/consumer.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/channel/websocket_view.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/filter_controller.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/router_controller.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/rpc_controller.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/search_controller.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/ws_controller.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/data_type/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/data_type/data_type.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/deps/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/deps/filter_params_deps.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/deps/paginator_deps.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/deps/tree_params_deps.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/example/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/example/models.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/example/routers.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/example/schemas.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/example/views.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/fastapi_utils/all.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/fastapi_utils/param_utils.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/model/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/model/base_model.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/aes_field.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/enum_field.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/pk_field.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/pwd_field.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/validator.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/base_model.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/common_function.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/common_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/create_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/filter_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/update_schema_factory.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/app_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/db_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/file_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/jwt_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/otlp_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/redis_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/sms_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/system_settings.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/aes.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/auto_discover.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/exception.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/file_utils.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/pwd_utils.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/ramdom_utils.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/snowflake.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/str_util.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/utils/swagger_to_js.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi.egg-info/top_level.txt +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/script/__init__.py +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/setup.cfg +0 -0
- {fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/setup.py +0 -0
|
@@ -174,7 +174,10 @@ class GetAllView(BaseView, GetMixin):
|
|
|
174
174
|
for key, value in self.prefetch_related_fields.items():
|
|
175
175
|
if value and type(value) in [list, tuple, set]:
|
|
176
176
|
for val in value:
|
|
177
|
-
|
|
177
|
+
val_str = val
|
|
178
|
+
if type(val) in [list, tuple, set]:
|
|
179
|
+
val_str = val[0]
|
|
180
|
+
get_all_schema_include.append(key + "__" + val_str)
|
|
178
181
|
self.get_all_schema = self.get_all_schema or get_all_schema_factory(
|
|
179
182
|
self.model_class, include=get_all_schema_include
|
|
180
183
|
) or self.get_one_schema if hasattr(self, "get_one_schema") else get_one_schema_factory(self.model_class)
|
|
@@ -71,7 +71,10 @@ class GetOneView(BaseView, GetMixin):
|
|
|
71
71
|
for key, value in self.prefetch_related_fields.items():
|
|
72
72
|
if value and type(value) in [list, tuple, set]:
|
|
73
73
|
for val in value:
|
|
74
|
-
|
|
74
|
+
val_str = val
|
|
75
|
+
if type(val) in [list, tuple, set]:
|
|
76
|
+
val_str = val[0]
|
|
77
|
+
get_one_schema_include.append(key + "__" + val_str)
|
|
75
78
|
self.get_one_schema = self.schema or self.get_one_schema or get_one_schema_factory(
|
|
76
79
|
model_class=self.model_class,
|
|
77
80
|
include=get_one_schema_include,
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/json_encoders.py
RENAMED
|
@@ -40,8 +40,9 @@ common_format_with_s_time = new_time_type("COMMON_FORMAT_WITH_S_TIME", format_st
|
|
|
40
40
|
|
|
41
41
|
JSON_ENCODERS = {
|
|
42
42
|
time: lambda v: v.strftime(TIME_FORMAT_TIME_COMMON),
|
|
43
|
-
date: lambda v: v.strftime(DATE_FORMAT_COMMON),
|
|
43
|
+
# date: lambda v: v.strftime(DATE_FORMAT_COMMON),
|
|
44
44
|
# datetime: lambda v: v.strftime(DATETIME_FORMAT_COMMON),
|
|
45
|
+
date: lambda v: int(datetime.combine(v, time.min).timestamp() * 1000),
|
|
45
46
|
datetime: lambda v: int(v.timestamp() * 1000),
|
|
46
47
|
|
|
47
48
|
# special date type
|
|
@@ -16,14 +16,14 @@ def get_all_schema_factory(
|
|
|
16
16
|
include: Union[list, tuple, set] = None,
|
|
17
17
|
extra_include: Union[list, tuple, set] = None,
|
|
18
18
|
exclude: Union[list, tuple, set] = None,
|
|
19
|
-
name: Optional[str] = None
|
|
19
|
+
name: Optional[str] = None,
|
|
20
20
|
) -> Optional[Type[T]]:
|
|
21
21
|
"""
|
|
22
22
|
Is used to create a GetAllSchema
|
|
23
23
|
"""
|
|
24
24
|
if not hasattr(model_class, "PydanticMeta"):
|
|
25
25
|
return None
|
|
26
|
-
if not hasattr(model_class.PydanticMeta, "get_all_include") and not hasattr(model_class.PydanticMeta, "get_all_exclude"):
|
|
26
|
+
if not include and not extra_include and not exclude and not hasattr(model_class.PydanticMeta, "get_all_include") and not hasattr(model_class.PydanticMeta, "get_all_exclude"):
|
|
27
27
|
return None
|
|
28
28
|
|
|
29
29
|
all_fields_info = get_dict_from_model_fields(model_class)
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import os
|
|
1
2
|
from functools import lru_cache
|
|
2
3
|
from pathlib import Path
|
|
3
|
-
from typing import Union
|
|
4
|
+
from typing import Union, Optional, Type
|
|
4
5
|
|
|
5
6
|
import yaml
|
|
7
|
+
from fastapi.exceptions import ValidationException
|
|
6
8
|
from pydantic import BaseModel
|
|
7
9
|
from pydantic.fields import FieldInfo
|
|
8
10
|
|
|
11
|
+
from fastgenerateapi.settings.etcd_settings import EtcdSettings
|
|
9
12
|
from fastgenerateapi.settings.redis_settings import RedisSettings
|
|
10
13
|
from fastgenerateapi.settings.app_settings import AppSettings
|
|
11
14
|
from fastgenerateapi.settings.system_settings import SystemSettings
|
|
@@ -20,12 +23,17 @@ class SettingsModel(BaseModel):
|
|
|
20
23
|
redis_settings: RedisSettings = RedisSettings()
|
|
21
24
|
|
|
22
25
|
@classmethod
|
|
23
|
-
def generate_file(
|
|
26
|
+
def generate_file(
|
|
27
|
+
cls,
|
|
28
|
+
path='./.env',
|
|
29
|
+
etcd_settings: Optional[EtcdSettings] = None,
|
|
30
|
+
):
|
|
24
31
|
"""
|
|
25
32
|
生成配置文件
|
|
26
33
|
.env 会增加前缀
|
|
27
34
|
.yaml 忽略前缀
|
|
28
35
|
:param path: 可选 .env / application.yaml
|
|
36
|
+
:param etcd_settings:
|
|
29
37
|
:return:
|
|
30
38
|
"""
|
|
31
39
|
content = ''
|
|
@@ -57,15 +65,26 @@ class SettingsModel(BaseModel):
|
|
|
57
65
|
else:
|
|
58
66
|
content += f" # {v.description}\n"
|
|
59
67
|
content += "\n"
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
if etcd_settings and etcd_settings.ETCD_SETTING_KEY:
|
|
69
|
+
import etcd3
|
|
70
|
+
etcd_dict = etcd_settings.model_dump(exclude_unset=True, by_alias=True, exclude={"ETCD_SETTING_KEY", })
|
|
71
|
+
etcd = etcd3.client(**{key.removeprefix("ETCD_").lower(): value for key, value in etcd_dict.items()})
|
|
72
|
+
etcd.put(etcd_settings.ETCD_SETTING_KEY, content)
|
|
73
|
+
else:
|
|
74
|
+
with open(file=path, mode='w', encoding='utf-8') as f:
|
|
75
|
+
f.writelines(content)
|
|
62
76
|
|
|
63
77
|
@classmethod
|
|
64
78
|
@lru_cache
|
|
65
|
-
def get_global_settings(
|
|
79
|
+
def get_global_settings(
|
|
80
|
+
cls,
|
|
81
|
+
path: Union[Path, str, None] = '.env',
|
|
82
|
+
etcd_settings: Optional[EtcdSettings] = None,
|
|
83
|
+
):
|
|
66
84
|
"""
|
|
67
85
|
get global settings and set into cache
|
|
68
|
-
:param path: 可选 .env / application.yaml
|
|
86
|
+
:param path: 可选 .env / application.yaml / etcd.yaml
|
|
87
|
+
:param etcd_settings: 当储配置 存在etcd 时
|
|
69
88
|
:return:
|
|
70
89
|
"""
|
|
71
90
|
setting_models = cls.model_fields.copy()
|
|
@@ -76,11 +95,28 @@ class SettingsModel(BaseModel):
|
|
|
76
95
|
if isinstance(v, FieldInfo):
|
|
77
96
|
setting_dict[k] = v.annotation(_env_file=str(path))
|
|
78
97
|
elif str(path).__contains__('.yaml'):
|
|
79
|
-
|
|
80
|
-
|
|
98
|
+
data_dict = None
|
|
99
|
+
if os.path.isfile(path):
|
|
100
|
+
with open(path, 'r', encoding='utf-8') as file:
|
|
101
|
+
data_dict = yaml.safe_load(file)
|
|
102
|
+
else:
|
|
103
|
+
if not etcd_settings:
|
|
104
|
+
etcd_settings = EtcdSettings()
|
|
105
|
+
if etcd_settings.ETCD_SETTING_KEY:
|
|
106
|
+
import etcd3
|
|
107
|
+
etcd_dict = etcd_settings.model_dump(exclude_unset=True, by_alias=True, exclude={"ETCD_SETTING_KEY",})
|
|
108
|
+
etcd = etcd3.client(**{key.removeprefix("ETCD_").lower(): value for key, value in etcd_dict.items()})
|
|
109
|
+
res, metadata = etcd.get(etcd_settings.ETCD_SETTING_KEY)
|
|
110
|
+
data_dict = yaml.safe_load(res)
|
|
111
|
+
if not data_dict:
|
|
112
|
+
raise ValidationException(errors="配置错误")
|
|
81
113
|
for k, v in setting_models.items():
|
|
82
114
|
if isinstance(v, FieldInfo):
|
|
83
|
-
|
|
115
|
+
if hasattr(v.annotation, "Config") and v.annotation.Config.env_prefix:
|
|
116
|
+
annotation_dict = {k_i.removeprefix(v.annotation.Config.env_prefix): v_i for k_i, v_i in data_dict.get(v.annotation.__name__, {}).items()}
|
|
117
|
+
else:
|
|
118
|
+
annotation_dict = data_dict.get(v.annotation.__name__, {})
|
|
119
|
+
setting_dict[k] = v.annotation(**annotation_dict)
|
|
84
120
|
|
|
85
121
|
setting_data = cls(**setting_dict)
|
|
86
122
|
global settings
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from typing import Optional, Any
|
|
2
|
+
|
|
3
|
+
from pydantic import Field
|
|
4
|
+
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class EtcdSettings(BaseSettings):
|
|
8
|
+
"""
|
|
9
|
+
Etcd Settings
|
|
10
|
+
"""
|
|
11
|
+
ETCD_SETTING_KEY: Optional[str] = Field(default=None, description="当使用etcd做配置储存时的键值")
|
|
12
|
+
ETCD_HOST: Optional[str] = Field(default='localhost', description="地址")
|
|
13
|
+
ETCD_PORT: Optional[int] = Field(default=2379, description="端口")
|
|
14
|
+
ETCD_CA_CERT: Optional[str] = Field(default=None, description="Ca证书")
|
|
15
|
+
ETCD_CERT_KEY: Optional[str] = Field(default=None, description="证书key")
|
|
16
|
+
ETCD_CERT_CERT: Optional[str] = Field(default=None, description="证书密钥")
|
|
17
|
+
ETCD_TIMEOUT: Optional[int] = Field(default=None, description="超时试剂")
|
|
18
|
+
ETCD_USER: Optional[str] = Field(default=None, description="账号")
|
|
19
|
+
ETCD_PASSWORD: Optional[str] = Field(default=None, description="密码")
|
|
20
|
+
ETCD_GRPC_OPTIONS: Optional[Any] = Field(default=None, description="grpc参数")
|
|
21
|
+
|
|
22
|
+
model_config = SettingsConfigDict(
|
|
23
|
+
env_prefix="",
|
|
24
|
+
env_file=".env",
|
|
25
|
+
case_sensitive=True,
|
|
26
|
+
extra='ignore',
|
|
27
|
+
frozen=True,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
@@ -93,6 +93,7 @@ fastgenerateapi/settings/__init__.py
|
|
|
93
93
|
fastgenerateapi/settings/all_settings.py
|
|
94
94
|
fastgenerateapi/settings/app_settings.py
|
|
95
95
|
fastgenerateapi/settings/db_settings.py
|
|
96
|
+
fastgenerateapi/settings/etcd_settings.py
|
|
96
97
|
fastgenerateapi/settings/file_settings.py
|
|
97
98
|
fastgenerateapi/settings/jwt_settings.py
|
|
98
99
|
fastgenerateapi/settings/otlp_settings.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/delete_filter_view.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/delete_tree_view.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/get_relation_view.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/base_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/get_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/response_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/save_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/tool_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/docx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/file_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/pdf_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/mixin/utils/zip_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/api_view/update_relation_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/channel/connection_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/filter_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/router_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/rpc_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/search_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/controller/ws_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/data_type/mysql_data_type.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/deps/filter_params_deps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/fastapi_utils/param_utils.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/fastapi_utils/response_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/my_fields/soft_delete_field.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/base_model.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/pydantic_utils/base_settings.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/schemas_factory/common_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/redis_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi/settings/system_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.16 → fastgenerateapi-1.1.20}/fastgenerateapi.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|