zrb 1.0.0a21__py3-none-any.whl → 1.0.0b2__py3-none-any.whl
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.
- zrb/__init__.py +2 -1
- zrb/__main__.py +0 -3
- zrb/builtin/__init__.py +3 -0
- zrb/builtin/group.py +1 -0
- zrb/builtin/llm/llm_chat.py +2 -2
- zrb/builtin/llm/tool/web.py +1 -1
- zrb/builtin/project/add/fastapp/fastapp_task.py +2 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +5 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +80 -20
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +150 -42
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py +113 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py +9 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_db_repository.py +0 -10
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py +37 -16
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/{factory.py → my_entity_repository_factory.py} +2 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +16 -6
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +57 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +72 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +1 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +13 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +23 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +42 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +7 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_api_client.py +6 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/{any_client.py → my_module_client.py} +1 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client_factory.py +11 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_direct_client.py +5 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +11 -11
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +2 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +8 -8
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +47 -20
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +29 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +185 -101
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +236 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/{db_engine.py → db_engine_factory.py} +1 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +12 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +10 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +7 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +47 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +105 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +58 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +37 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +25 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +1 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +16 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +163 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +9 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +15 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +160 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +18 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +7 -3
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +117 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +11 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +26 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +61 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +13 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +75 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +59 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +13 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +105 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +7 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +42 -13
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +38 -17
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +2 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +105 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +7 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +43 -14
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +198 -28
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +74 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +6 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +6 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +34 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +1 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +17 -5
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +50 -4
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py +52 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +30 -5
- zrb/builtin/python.py +1 -1
- zrb/builtin/random.py +61 -0
- zrb/cmd/cmd_val.py +6 -5
- zrb/content_transformer/any_content_transformer.py +7 -0
- zrb/content_transformer/content_transformer.py +6 -0
- zrb/runner/cli.py +14 -7
- zrb/runner/web_app.py +28 -280
- zrb/runner/web_config/config.py +91 -0
- zrb/runner/web_config/config_factory.py +26 -0
- zrb/runner/web_route/docs_route.py +17 -0
- zrb/runner/web_route/error_page/serve_default_404.py +28 -0
- zrb/runner/{web_controller/error_page/controller.py → web_route/error_page/show_error_page.py} +2 -2
- zrb/runner/{web_controller → web_route}/error_page/view.html +5 -0
- zrb/runner/web_route/home_page/home_page_route.py +51 -0
- zrb/runner/web_route/login_api_route.py +31 -0
- zrb/runner/web_route/login_page/login_page_route.py +39 -0
- zrb/runner/web_route/logout_api_route.py +18 -0
- zrb/runner/web_route/logout_page/logout_page_route.py +40 -0
- zrb/runner/{web_controller/group_info_page/controller.py → web_route/node_page/group/show_group_page.py} +3 -3
- zrb/runner/web_route/node_page/node_page_route.py +50 -0
- zrb/runner/{web_controller/session_page/controller.py → web_route/node_page/task/show_task_page.py} +3 -3
- zrb/runner/web_route/refresh_token_api_route.py +38 -0
- zrb/runner/web_route/static/static_route.py +44 -0
- zrb/runner/web_route/task_input_api_route.py +47 -0
- zrb/runner/web_route/task_session_api_route.py +102 -0
- zrb/runner/web_schema/session.py +5 -0
- zrb/runner/web_schema/token.py +11 -0
- zrb/runner/web_schema/user.py +32 -0
- zrb/runner/web_util/cookie.py +29 -0
- zrb/runner/{web_util.py → web_util/html.py} +1 -23
- zrb/runner/web_util/token.py +72 -0
- zrb/runner/web_util/user.py +63 -0
- zrb/session/session.py +6 -4
- zrb/session_state_logger/{default_session_state_logger.py → session_state_logger_factory.py} +1 -1
- zrb/task/base_task.py +53 -6
- zrb/task/base_trigger.py +2 -0
- zrb/task/cmd_task.py +9 -5
- zrb/task/http_check.py +2 -0
- zrb/task/llm_task.py +2 -0
- zrb/task/make_task.py +2 -0
- zrb/task/rsync_task.py +2 -0
- zrb/task/scaffolder.py +8 -5
- zrb/task/scheduler.py +2 -0
- zrb/task/tcp_check.py +2 -0
- zrb/task_status/task_status.py +4 -3
- zrb/util/cmd/command.py +1 -0
- zrb/util/file.py +7 -1
- {zrb-1.0.0a21.dist-info → zrb-1.0.0b2.dist-info}/METADATA +1 -1
- zrb-1.0.0b2.dist-info/RECORD +307 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/any_client_method.py +0 -27
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_usecase.py +0 -65
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/api_client.py +0 -6
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/direct_client.py +0 -6
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/factory.py +0 -9
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app.py +0 -20
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_usecase.py +0 -245
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/any_client.py +0 -33
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/api_client.py +0 -7
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/direct_client.py +0 -6
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/factory.py +0 -9
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_user_table.py +0 -37
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_usecase.py +0 -53
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_usecase_factory.py +0 -6
- zrb/runner/web_config.py +0 -274
- zrb/runner/web_controller/home_page/controller.py +0 -33
- zrb/runner/web_controller/login_page/controller.py +0 -25
- zrb/runner/web_controller/logout_page/controller.py +0 -26
- zrb-1.0.0a21.dist-info/RECORD +0 -244
- /zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/{create_column_task.py → add_column_task.py} +0 -0
- /zrb/{runner/web_controller → builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission}/__init__.py +0 -0
- /zrb/{runner/web_controller/group_info_page → builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role}/__init__.py +0 -0
- /zrb/runner/{web_controller/home_page → web_route}/__init__.py +0 -0
- /zrb/runner/{web_controller/session_page → web_route/home_page}/__init__.py +0 -0
- /zrb/runner/{web_controller → web_route}/home_page/view.html +0 -0
- /zrb/runner/{web_controller → web_route}/login_page/view.html +0 -0
- /zrb/runner/{web_controller → web_route}/logout_page/view.html +0 -0
- /zrb/runner/{web_controller/group_info_page → web_route/node_page/group}/view.html +0 -0
- /zrb/runner/{web_controller/session_page → web_route/node_page/task}/partial/input.html +0 -0
- /zrb/runner/{web_controller/session_page → web_route/node_page/task}/view.html +0 -0
- /zrb/runner/{refresh-token.template.js → web_route/static/refresh-token.template.js} +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/common.css +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/favicon-32x32.png +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/login/event.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/logout/event.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/pico.min.css +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/common-util.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/current-session.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/event.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/past-session.js +0 -0
- {zrb-1.0.0a21.dist-info → zrb-1.0.0b2.dist-info}/WHEEL +0 -0
- {zrb-1.0.0a21.dist-info → zrb-1.0.0b2.dist-info}/entry_points.txt +0 -0
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
from my_app_name.schema.permission import (
|
4
|
+
MultiplePermissionResponse,
|
5
|
+
PermissionCreateWithAudit,
|
6
|
+
PermissionResponse,
|
7
|
+
PermissionUpdateWithAudit,
|
8
|
+
)
|
9
|
+
from my_app_name.schema.role import (
|
10
|
+
MultipleRoleResponse,
|
11
|
+
RoleCreateWithAudit,
|
12
|
+
RoleResponse,
|
13
|
+
RoleUpdateWithAudit,
|
14
|
+
)
|
15
|
+
from my_app_name.schema.user import (
|
16
|
+
MultipleUserResponse,
|
17
|
+
UserCreateWithAudit,
|
18
|
+
UserResponse,
|
19
|
+
UserUpdateWithAudit,
|
20
|
+
)
|
21
|
+
|
22
|
+
|
23
|
+
class AuthClient(ABC):
|
24
|
+
|
25
|
+
# Permission related methods
|
26
|
+
|
27
|
+
@abstractmethod
|
28
|
+
async def get_permission_by_id(self, permission_id: str) -> PermissionResponse:
|
29
|
+
"""Get permission by id"""
|
30
|
+
|
31
|
+
@abstractmethod
|
32
|
+
async def get_permissions(
|
33
|
+
self,
|
34
|
+
page: int = 1,
|
35
|
+
page_size: int = 10,
|
36
|
+
sort: str | None = None,
|
37
|
+
filter: str | None = None,
|
38
|
+
) -> MultiplePermissionResponse:
|
39
|
+
"""Get permissions by filter and sort"""
|
40
|
+
|
41
|
+
@abstractmethod
|
42
|
+
async def create_permission(
|
43
|
+
self, data: PermissionCreateWithAudit
|
44
|
+
) -> PermissionResponse:
|
45
|
+
"""Create a new permission"""
|
46
|
+
|
47
|
+
@abstractmethod
|
48
|
+
async def create_permission(
|
49
|
+
self, data: list[PermissionCreateWithAudit]
|
50
|
+
) -> list[PermissionResponse]:
|
51
|
+
"""Create new permissions"""
|
52
|
+
|
53
|
+
@abstractmethod
|
54
|
+
async def update_permission_bulk(
|
55
|
+
self, permission_ids: list[str], data: PermissionUpdateWithAudit
|
56
|
+
) -> PermissionResponse:
|
57
|
+
"""Update some permissions"""
|
58
|
+
|
59
|
+
@abstractmethod
|
60
|
+
async def update_permission(
|
61
|
+
self, permission_id: str, data: PermissionUpdateWithAudit
|
62
|
+
) -> PermissionResponse:
|
63
|
+
"""Update a permission"""
|
64
|
+
|
65
|
+
@abstractmethod
|
66
|
+
async def delete_permission_bulk(
|
67
|
+
self, permission_ids: str, deleted_by: str
|
68
|
+
) -> PermissionResponse:
|
69
|
+
"""Delete some permissions"""
|
70
|
+
|
71
|
+
@abstractmethod
|
72
|
+
async def delete_permission(
|
73
|
+
self, permission_id: str, deleted_by: str
|
74
|
+
) -> PermissionResponse:
|
75
|
+
"""Delete a permission"""
|
76
|
+
|
77
|
+
# Role related methods
|
78
|
+
|
79
|
+
@abstractmethod
|
80
|
+
async def get_role_by_id(self, role_id: str) -> RoleResponse:
|
81
|
+
"""Get role by id"""
|
82
|
+
|
83
|
+
@abstractmethod
|
84
|
+
async def get_roles(
|
85
|
+
self,
|
86
|
+
page: int = 1,
|
87
|
+
page_size: int = 10,
|
88
|
+
sort: str | None = None,
|
89
|
+
filter: str | None = None,
|
90
|
+
) -> MultipleRoleResponse:
|
91
|
+
"""Get roles by filter and sort"""
|
92
|
+
|
93
|
+
@abstractmethod
|
94
|
+
async def create_role(self, data: RoleCreateWithAudit) -> RoleResponse:
|
95
|
+
"""Create a new role"""
|
96
|
+
|
97
|
+
@abstractmethod
|
98
|
+
async def create_role(self, data: list[RoleCreateWithAudit]) -> list[RoleResponse]:
|
99
|
+
"""Create new roles"""
|
100
|
+
|
101
|
+
@abstractmethod
|
102
|
+
async def update_role_bulk(
|
103
|
+
self, role_ids: list[str], data: RoleUpdateWithAudit
|
104
|
+
) -> RoleResponse:
|
105
|
+
"""Update some roles"""
|
106
|
+
|
107
|
+
@abstractmethod
|
108
|
+
async def update_role(
|
109
|
+
self, role_id: str, data: RoleUpdateWithAudit
|
110
|
+
) -> RoleResponse:
|
111
|
+
"""Update a role"""
|
112
|
+
|
113
|
+
@abstractmethod
|
114
|
+
async def delete_role_bulk(self, role_ids: str, deleted_by: str) -> RoleResponse:
|
115
|
+
"""Delete some roles"""
|
116
|
+
|
117
|
+
@abstractmethod
|
118
|
+
async def delete_role(self, role_id: str, deleted_by: str) -> RoleResponse:
|
119
|
+
"""Delete a role"""
|
120
|
+
|
121
|
+
# User related methods
|
122
|
+
|
123
|
+
@abstractmethod
|
124
|
+
async def get_user_by_id(self, user_id: str) -> UserResponse:
|
125
|
+
"""Get user by id"""
|
126
|
+
|
127
|
+
@abstractmethod
|
128
|
+
async def get_users(
|
129
|
+
self,
|
130
|
+
page: int = 1,
|
131
|
+
page_size: int = 10,
|
132
|
+
sort: str | None = None,
|
133
|
+
filter: str | None = None,
|
134
|
+
) -> MultipleUserResponse:
|
135
|
+
"""Get users by filter and sort"""
|
136
|
+
|
137
|
+
@abstractmethod
|
138
|
+
async def create_user(self, data: UserCreateWithAudit) -> UserResponse:
|
139
|
+
"""Create a new user"""
|
140
|
+
|
141
|
+
@abstractmethod
|
142
|
+
async def create_user(self, data: list[UserCreateWithAudit]) -> list[UserResponse]:
|
143
|
+
"""Create new users"""
|
144
|
+
|
145
|
+
@abstractmethod
|
146
|
+
async def update_user_bulk(
|
147
|
+
self, user_ids: list[str], data: UserUpdateWithAudit
|
148
|
+
) -> UserResponse:
|
149
|
+
"""Update some users"""
|
150
|
+
|
151
|
+
@abstractmethod
|
152
|
+
async def update_user(
|
153
|
+
self, user_id: str, data: UserUpdateWithAudit
|
154
|
+
) -> UserResponse:
|
155
|
+
"""Update a user"""
|
156
|
+
|
157
|
+
@abstractmethod
|
158
|
+
async def delete_user_bulk(self, user_ids: str, deleted_by: str) -> UserResponse:
|
159
|
+
"""Delete some users"""
|
160
|
+
|
161
|
+
@abstractmethod
|
162
|
+
async def delete_user(self, user_id: str, deleted_by: str) -> UserResponse:
|
163
|
+
"""Delete a user"""
|
@@ -0,0 +1,9 @@
|
|
1
|
+
from my_app_name.config import APP_COMMUNICATION
|
2
|
+
from my_app_name.module.auth.client.auth_api_client import AuthAPIClient
|
3
|
+
from my_app_name.module.auth.client.auth_client import AuthClient
|
4
|
+
from my_app_name.module.auth.client.auth_direct_client import AuthDirectClient
|
5
|
+
|
6
|
+
if APP_COMMUNICATION == "direct":
|
7
|
+
auth_client: AuthClient = AuthDirectClient()
|
8
|
+
elif APP_COMMUNICATION == "api":
|
9
|
+
auth_client: AuthClient = AuthAPIClient()
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from my_app_name.module.auth.client.auth_client import AuthClient
|
2
|
+
from my_app_name.module.auth.service.permission.permission_service_factory import (
|
3
|
+
permission_service,
|
4
|
+
)
|
5
|
+
from my_app_name.module.auth.service.role.role_service_factory import role_service
|
6
|
+
from my_app_name.module.auth.service.user.user_service_factory import user_service
|
7
|
+
|
8
|
+
|
9
|
+
class AuthDirectClient(
|
10
|
+
permission_service.as_direct_client(),
|
11
|
+
role_service.as_direct_client(),
|
12
|
+
user_service.as_direct_client(),
|
13
|
+
AuthClient,
|
14
|
+
):
|
15
|
+
pass
|
@@ -0,0 +1,160 @@
|
|
1
|
+
"""Add user table
|
2
|
+
|
3
|
+
Revision ID: 3093c7336477
|
4
|
+
Revises:
|
5
|
+
Create Date: 2024-11-20 05:57:01.684118
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
from typing import Sequence, Union
|
10
|
+
|
11
|
+
import sqlalchemy as sa
|
12
|
+
import sqlmodel
|
13
|
+
from alembic import op
|
14
|
+
|
15
|
+
# revision identifiers, used by Alembic.
|
16
|
+
revision: str = "3093c7336477"
|
17
|
+
down_revision: Union[str, None] = None
|
18
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
19
|
+
depends_on: Union[str, Sequence[str], None] = None
|
20
|
+
|
21
|
+
|
22
|
+
def upgrade() -> None:
|
23
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
24
|
+
op.create_table(
|
25
|
+
"permission",
|
26
|
+
sa.Column("id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
27
|
+
sa.Column("created_at", sa.DateTime(), nullable=True),
|
28
|
+
sa.Column("created_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
|
29
|
+
sa.Column("updated_at", sa.DateTime(), nullable=True),
|
30
|
+
sa.Column("updated_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
|
31
|
+
sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
32
|
+
sa.Column("description", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
33
|
+
sa.PrimaryKeyConstraint("id"),
|
34
|
+
)
|
35
|
+
op.create_index(op.f("ix_permission_name"), "permission", ["name"], unique=False)
|
36
|
+
op.create_index(
|
37
|
+
op.f("ix_permission_created_at"), "permission", ["created_at"], unique=False
|
38
|
+
)
|
39
|
+
op.create_index(
|
40
|
+
op.f("ix_permission_created_by"), "permission", ["created_by"], unique=False
|
41
|
+
)
|
42
|
+
op.create_index(
|
43
|
+
op.f("ix_permission_updated_at"), "permission", ["updated_at"], unique=False
|
44
|
+
)
|
45
|
+
op.create_index(
|
46
|
+
op.f("ix_permission_updated_by"), "permission", ["updated_by"], unique=False
|
47
|
+
)
|
48
|
+
|
49
|
+
op.create_table(
|
50
|
+
"role",
|
51
|
+
sa.Column("id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
52
|
+
sa.Column("created_at", sa.DateTime(), nullable=True),
|
53
|
+
sa.Column("created_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
|
54
|
+
sa.Column("updated_at", sa.DateTime(), nullable=True),
|
55
|
+
sa.Column("updated_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
|
56
|
+
sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
57
|
+
sa.Column("description", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
58
|
+
sa.PrimaryKeyConstraint("id"),
|
59
|
+
)
|
60
|
+
op.create_index(op.f("ix_role_name"), "role", ["name"], unique=False)
|
61
|
+
op.create_index(op.f("ix_role_created_at"), "role", ["created_at"], unique=False)
|
62
|
+
op.create_index(op.f("ix_role_created_by"), "role", ["created_by"], unique=False)
|
63
|
+
op.create_index(op.f("ix_role_updated_at"), "role", ["updated_at"], unique=False)
|
64
|
+
op.create_index(op.f("ix_role_updated_by"), "role", ["updated_by"], unique=False)
|
65
|
+
|
66
|
+
op.create_table(
|
67
|
+
"rolepermission",
|
68
|
+
sa.Column("id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
69
|
+
sa.Column("role_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
70
|
+
sa.Column("permission_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
71
|
+
sa.Column("created_at", sa.DateTime(), nullable=True),
|
72
|
+
sa.Column("created_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
|
73
|
+
sa.PrimaryKeyConstraint("id"),
|
74
|
+
)
|
75
|
+
op.create_index(
|
76
|
+
op.f("ix_rolepermission_permission_id"),
|
77
|
+
"rolepermission",
|
78
|
+
["permission_id"],
|
79
|
+
unique=False,
|
80
|
+
)
|
81
|
+
op.create_index(
|
82
|
+
op.f("ix_rolepermission_role_id"), "rolepermission", ["role_id"], unique=False
|
83
|
+
)
|
84
|
+
|
85
|
+
op.create_table(
|
86
|
+
"user",
|
87
|
+
sa.Column("id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
88
|
+
sa.Column("username", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
89
|
+
sa.Column("password", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
90
|
+
sa.Column("created_at", sa.DateTime(), nullable=False),
|
91
|
+
sa.Column("created_by", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
92
|
+
sa.Column("updated_at", sa.DateTime(), nullable=True),
|
93
|
+
sa.Column("updated_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
|
94
|
+
sa.PrimaryKeyConstraint("id"),
|
95
|
+
)
|
96
|
+
op.create_index(op.f("ix_user_username"), "user", ["username"], unique=False)
|
97
|
+
op.create_index(op.f("ix_user_created_at"), "user", ["created_at"], unique=False)
|
98
|
+
op.create_index(op.f("ix_user_created_by"), "user", ["created_by"], unique=False)
|
99
|
+
op.create_index(op.f("ix_user_updated_at"), "user", ["updated_at"], unique=False)
|
100
|
+
op.create_index(op.f("ix_user_updated_by"), "user", ["updated_by"], unique=False)
|
101
|
+
|
102
|
+
op.create_table(
|
103
|
+
"userrole",
|
104
|
+
sa.Column("id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
105
|
+
sa.Column("user_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
106
|
+
sa.Column("role_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
107
|
+
sa.Column("created_at", sa.DateTime(), nullable=True),
|
108
|
+
sa.Column("created_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
|
109
|
+
sa.PrimaryKeyConstraint("id"),
|
110
|
+
)
|
111
|
+
op.create_index(op.f("ix_userrole_role_id"), "userrole", ["role_id"], unique=False)
|
112
|
+
op.create_index(op.f("ix_userrole_user_id"), "userrole", ["user_id"], unique=False)
|
113
|
+
|
114
|
+
op.create_table(
|
115
|
+
"session",
|
116
|
+
sa.Column("id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
117
|
+
sa.Column("user_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
118
|
+
sa.Column("device", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
119
|
+
sa.Column("os", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
120
|
+
sa.Column("browser", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
|
121
|
+
sa.PrimaryKeyConstraint("id"),
|
122
|
+
)
|
123
|
+
op.create_index(op.f("ix_session_user_id"), "session", ["user_id"], unique=False)
|
124
|
+
# ### end Alembic commands ###
|
125
|
+
|
126
|
+
|
127
|
+
def downgrade() -> None:
|
128
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
129
|
+
op.drop_index(op.f("ix_session_user_id"), table_name="session")
|
130
|
+
op.drop_table("session")
|
131
|
+
|
132
|
+
op.drop_index(op.f("ix_userrole_user_id"), table_name="userrole")
|
133
|
+
op.drop_index(op.f("ix_userrole_role_id"), table_name="userrole")
|
134
|
+
op.drop_table("userrole")
|
135
|
+
|
136
|
+
op.drop_index(op.f("ix_user_username"), table_name="user")
|
137
|
+
op.drop_index(op.f("ix_user_updated_by"), table_name="user")
|
138
|
+
op.drop_index(op.f("ix_user_updated_at"), table_name="user")
|
139
|
+
op.drop_index(op.f("ix_user_created_by"), table_name="user")
|
140
|
+
op.drop_index(op.f("ix_user_created_at"), table_name="user")
|
141
|
+
op.drop_table("user")
|
142
|
+
|
143
|
+
op.drop_index(op.f("ix_rolepermission_role_id"), table_name="rolepermission")
|
144
|
+
op.drop_index(op.f("ix_rolepermission_permission_id"), table_name="rolepermission")
|
145
|
+
op.drop_table("rolepermission")
|
146
|
+
|
147
|
+
op.drop_index(op.f("ix_role_name"), table_name="role")
|
148
|
+
op.drop_index(op.f("ix_role_updated_by"), table_name="role")
|
149
|
+
op.drop_index(op.f("ix_role_updated_at"), table_name="role")
|
150
|
+
op.drop_index(op.f("ix_role_created_by"), table_name="role")
|
151
|
+
op.drop_index(op.f("ix_role_created_at"), table_name="role")
|
152
|
+
op.drop_table("role")
|
153
|
+
|
154
|
+
op.drop_index(op.f("ix_permission_updated_by"), table_name="permission")
|
155
|
+
op.drop_index(op.f("ix_permission_updated_at"), table_name="permission")
|
156
|
+
op.drop_index(op.f("ix_permission_created_by"), table_name="permission")
|
157
|
+
op.drop_index(op.f("ix_permission_created_at"), table_name="permission")
|
158
|
+
op.drop_index(op.f("ix_permission_name"), table_name="permission")
|
159
|
+
op.drop_table("permission")
|
160
|
+
# ### end Alembic commands ###
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py
CHANGED
@@ -1,6 +1,23 @@
|
|
1
|
-
from my_app_name.schema.
|
1
|
+
from my_app_name.schema.permission import Permission
|
2
|
+
from my_app_name.schema.role import Role, RolePermission
|
3
|
+
from my_app_name.schema.session import Session
|
4
|
+
from my_app_name.schema.user import User, UserRole
|
2
5
|
from sqlalchemy import MetaData
|
3
6
|
|
4
7
|
metadata = MetaData()
|
8
|
+
|
9
|
+
Permission.metadata = metadata
|
10
|
+
Permission.__table__.tometadata(metadata)
|
11
|
+
|
12
|
+
Role.metadata = metadata
|
13
|
+
Role.__table__.tometadata(metadata)
|
14
|
+
RolePermission.metadata = metadata
|
15
|
+
RolePermission.__table__.tometadata(metadata)
|
16
|
+
|
5
17
|
User.metadata = metadata
|
6
18
|
User.__table__.tometadata(metadata)
|
19
|
+
UserRole.metadata = metadata
|
20
|
+
UserRole.__table__.tometadata(metadata)
|
21
|
+
|
22
|
+
Session.metadata = metadata
|
23
|
+
Session.__table__.tometadata(metadata)
|
@@ -1,8 +1,11 @@
|
|
1
1
|
from fastapi import FastAPI
|
2
|
-
from my_app_name.common.
|
2
|
+
from my_app_name.common.app_factory import app
|
3
3
|
from my_app_name.common.schema import BasicResponse
|
4
4
|
from my_app_name.config import APP_MAIN_MODULE, APP_MODE, APP_MODULES
|
5
|
-
from my_app_name.module.auth.service.
|
5
|
+
from my_app_name.module.auth.service.permission.permission_service_factory import (
|
6
|
+
permission_service,
|
7
|
+
)
|
8
|
+
from my_app_name.module.auth.service.user.user_service_factory import user_service
|
6
9
|
|
7
10
|
|
8
11
|
def serve_health_check(app: FastAPI):
|
@@ -31,7 +34,8 @@ def serve_route(app: FastAPI):
|
|
31
34
|
serve_readiness_check(app)
|
32
35
|
|
33
36
|
# Serve user endpoints for APIClient
|
34
|
-
|
37
|
+
user_service.serve_route(app)
|
38
|
+
permission_service.serve_route(app)
|
35
39
|
|
36
40
|
|
37
41
|
serve_route(app)
|
@@ -0,0 +1,117 @@
|
|
1
|
+
from logging import Logger
|
2
|
+
|
3
|
+
from my_app_name.common.base_service import BaseService
|
4
|
+
from my_app_name.module.auth.service.permission.repository.permission_repository import (
|
5
|
+
PermissionRepository,
|
6
|
+
)
|
7
|
+
from my_app_name.schema.permission import (
|
8
|
+
MultiplePermissionResponse,
|
9
|
+
PermissionCreateWithAudit,
|
10
|
+
PermissionResponse,
|
11
|
+
PermissionUpdateWithAudit,
|
12
|
+
)
|
13
|
+
|
14
|
+
|
15
|
+
class PermissionService(BaseService):
|
16
|
+
|
17
|
+
def __init__(self, logger: Logger, permission_repository: PermissionRepository):
|
18
|
+
super().__init__(logger)
|
19
|
+
self.permission_repository = permission_repository
|
20
|
+
|
21
|
+
@BaseService.route(
|
22
|
+
"/api/v1/permissions/{permission_id}",
|
23
|
+
methods=["get"],
|
24
|
+
response_model=PermissionResponse,
|
25
|
+
)
|
26
|
+
async def get_permission_by_id(self, permission_id: str) -> PermissionResponse:
|
27
|
+
return await self.permission_repository.get_by_id(permission_id)
|
28
|
+
|
29
|
+
@BaseService.route(
|
30
|
+
"/api/v1/permissions",
|
31
|
+
methods=["get"],
|
32
|
+
response_model=MultiplePermissionResponse,
|
33
|
+
)
|
34
|
+
async def get_permissions(
|
35
|
+
self,
|
36
|
+
page: int = 1,
|
37
|
+
page_size: int = 10,
|
38
|
+
sort: str | None = None,
|
39
|
+
filter: str | None = None,
|
40
|
+
) -> MultiplePermissionResponse:
|
41
|
+
permissions = await self.permission_repository.get(
|
42
|
+
page, page_size, filter, sort
|
43
|
+
)
|
44
|
+
count = await self.permission_repository.count(filter)
|
45
|
+
return MultiplePermissionResponse(data=permissions, count=count)
|
46
|
+
|
47
|
+
@BaseService.route(
|
48
|
+
"/api/v1/permissions/bulk",
|
49
|
+
methods=["post"],
|
50
|
+
response_model=list[PermissionResponse],
|
51
|
+
)
|
52
|
+
async def create_permission_bulk(
|
53
|
+
self, data: list[PermissionCreateWithAudit]
|
54
|
+
) -> list[PermissionResponse]:
|
55
|
+
permissions = await self.permission_repository.create_bulk(data)
|
56
|
+
return await self.permission_repository.get_by_ids(
|
57
|
+
[permission.id for permission in permissions]
|
58
|
+
)
|
59
|
+
|
60
|
+
@BaseService.route(
|
61
|
+
"/api/v1/permissions",
|
62
|
+
methods=["post"],
|
63
|
+
response_model=PermissionResponse,
|
64
|
+
)
|
65
|
+
async def create_permission(
|
66
|
+
self, data: PermissionCreateWithAudit
|
67
|
+
) -> PermissionResponse:
|
68
|
+
permission = await self.permission_repository.create(data)
|
69
|
+
return await self.permission_repository.get_by_id(permission.id)
|
70
|
+
|
71
|
+
@BaseService.route(
|
72
|
+
"/api/v1/permissions/bulk",
|
73
|
+
methods=["put"],
|
74
|
+
response_model=PermissionResponse,
|
75
|
+
)
|
76
|
+
async def update_permission_bulk(
|
77
|
+
self, permission_ids: list[str], data: PermissionUpdateWithAudit
|
78
|
+
) -> PermissionResponse:
|
79
|
+
permissions = await self.permission_repository.update_bulk(permission_ids, data)
|
80
|
+
return await self.permission_repository.get_by_ids(
|
81
|
+
[permission.id for permission in permissions]
|
82
|
+
)
|
83
|
+
|
84
|
+
@BaseService.route(
|
85
|
+
"/api/v1/permissions/{permission_id}",
|
86
|
+
methods=["put"],
|
87
|
+
response_model=PermissionResponse,
|
88
|
+
)
|
89
|
+
async def update_permission(
|
90
|
+
self, permission_id: str, data: PermissionUpdateWithAudit
|
91
|
+
) -> PermissionResponse:
|
92
|
+
permission = await self.permission_repository.update(permission_id, data)
|
93
|
+
return await self.permission_repository.get_by_id(permission.id)
|
94
|
+
|
95
|
+
@BaseService.route(
|
96
|
+
"/api/v1/permissions/{permission_id}",
|
97
|
+
methods=["delete"],
|
98
|
+
response_model=PermissionResponse,
|
99
|
+
)
|
100
|
+
async def delete_permission_bulk(
|
101
|
+
self, permission_ids: list[str], deleted_by: str
|
102
|
+
) -> PermissionResponse:
|
103
|
+
permissions = await self.permission_repository.delete_bulk(permission_ids)
|
104
|
+
return await self.permission_repository.get_by_ids(
|
105
|
+
[permission.id for permission in permissions]
|
106
|
+
)
|
107
|
+
|
108
|
+
@BaseService.route(
|
109
|
+
"/api/v1/permissions/{permission_id}",
|
110
|
+
methods=["delete"],
|
111
|
+
response_model=PermissionResponse,
|
112
|
+
)
|
113
|
+
async def delete_permission(
|
114
|
+
self, permission_id: str, deleted_by: str
|
115
|
+
) -> PermissionResponse:
|
116
|
+
permission = await self.permission_repository.delete(permission_id)
|
117
|
+
return await self.permission_repository.get_by_id(permission.id)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from my_app_name.common.logger_factory import logger
|
2
|
+
from my_app_name.module.auth.service.permission.permission_service import (
|
3
|
+
PermissionService,
|
4
|
+
)
|
5
|
+
from my_app_name.module.auth.service.permission.repository.permission_repository_factory import (
|
6
|
+
permission_repository,
|
7
|
+
)
|
8
|
+
|
9
|
+
permission_service = PermissionService(
|
10
|
+
logger, permission_repository=permission_repository
|
11
|
+
)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from my_app_name.common.base_db_repository import BaseDBRepository
|
2
|
+
from my_app_name.module.auth.service.permission.repository.permission_repository import (
|
3
|
+
PermissionRepository,
|
4
|
+
)
|
5
|
+
from my_app_name.schema.permission import (
|
6
|
+
Permission,
|
7
|
+
PermissionCreateWithAudit,
|
8
|
+
PermissionResponse,
|
9
|
+
PermissionUpdateWithAudit,
|
10
|
+
)
|
11
|
+
|
12
|
+
|
13
|
+
class PermissionDBRepository(
|
14
|
+
BaseDBRepository[
|
15
|
+
Permission,
|
16
|
+
PermissionResponse,
|
17
|
+
PermissionCreateWithAudit,
|
18
|
+
PermissionUpdateWithAudit,
|
19
|
+
],
|
20
|
+
PermissionRepository,
|
21
|
+
):
|
22
|
+
db_model = Permission
|
23
|
+
response_model = PermissionResponse
|
24
|
+
create_model = PermissionCreateWithAudit
|
25
|
+
update_model = PermissionUpdateWithAudit
|
26
|
+
entity_name = "permission"
|
@@ -0,0 +1,61 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
from my_app_name.schema.permission import (
|
4
|
+
Permission,
|
5
|
+
PermissionCreateWithAudit,
|
6
|
+
PermissionResponse,
|
7
|
+
PermissionUpdateWithAudit,
|
8
|
+
)
|
9
|
+
|
10
|
+
|
11
|
+
class PermissionRepository(ABC):
|
12
|
+
|
13
|
+
@abstractmethod
|
14
|
+
async def get_by_id(self, id: str) -> PermissionResponse:
|
15
|
+
"""Get permission by id"""
|
16
|
+
|
17
|
+
@abstractmethod
|
18
|
+
async def get_by_ids(self, id_list: list[str]) -> PermissionResponse:
|
19
|
+
"""Get permissions by ids"""
|
20
|
+
|
21
|
+
@abstractmethod
|
22
|
+
async def get(
|
23
|
+
self,
|
24
|
+
page: int = 1,
|
25
|
+
page_size: int = 10,
|
26
|
+
filter: str | None = None,
|
27
|
+
sort: str | None = None,
|
28
|
+
) -> list[Permission]:
|
29
|
+
"""Get permissions by filter and sort"""
|
30
|
+
|
31
|
+
@abstractmethod
|
32
|
+
async def count(self, filter: str | None = None) -> int:
|
33
|
+
"""Count permissions by filter"""
|
34
|
+
|
35
|
+
@abstractmethod
|
36
|
+
async def create(self, data: PermissionCreateWithAudit) -> Permission:
|
37
|
+
"""Create a new permission"""
|
38
|
+
|
39
|
+
@abstractmethod
|
40
|
+
async def create_bulk(
|
41
|
+
self, data: list[PermissionCreateWithAudit]
|
42
|
+
) -> list[Permission]:
|
43
|
+
"""Create some permissions"""
|
44
|
+
|
45
|
+
@abstractmethod
|
46
|
+
async def delete(self, id: str) -> Permission:
|
47
|
+
"""Delete a permission"""
|
48
|
+
|
49
|
+
@abstractmethod
|
50
|
+
async def delete_bulk(self, id_list: list[str]) -> list[Permission]:
|
51
|
+
"""Delete some permissions"""
|
52
|
+
|
53
|
+
@abstractmethod
|
54
|
+
async def update(self, id: str, data: PermissionUpdateWithAudit) -> Permission:
|
55
|
+
"""Update a permission"""
|
56
|
+
|
57
|
+
@abstractmethod
|
58
|
+
async def update_bulk(
|
59
|
+
self, id_list: list[str], data: PermissionUpdateWithAudit
|
60
|
+
) -> list[Permission]:
|
61
|
+
"""Update some permissions"""
|
@@ -0,0 +1,13 @@
|
|
1
|
+
from my_app_name.common.db_engine_factory import db_engine
|
2
|
+
from my_app_name.config import APP_REPOSITORY_TYPE
|
3
|
+
from my_app_name.module.auth.service.permission.repository.permission_db_repository import (
|
4
|
+
PermissionDBRepository,
|
5
|
+
)
|
6
|
+
from my_app_name.module.auth.service.permission.repository.permission_repository import (
|
7
|
+
PermissionRepository,
|
8
|
+
)
|
9
|
+
|
10
|
+
if APP_REPOSITORY_TYPE == "db":
|
11
|
+
permission_repository: PermissionRepository = PermissionDBRepository(db_engine)
|
12
|
+
else:
|
13
|
+
permission_repository: PermissionRepository = None
|