Implement user-specific question numbering and update database schema. Added triggers for automatic question numbering and adjustments upon deletion. Enhanced CRUD operations to manage user_question_number effectively.

This commit is contained in:
2025-09-06 18:35:12 +03:00
parent 50be010026
commit 596a2fa813
111 changed files with 16847 additions and 65 deletions

View File

@@ -0,0 +1,66 @@
"""
Глобальный реестр разрешений и фабричные функции
"""
from typing import Optional
from .base import PermissionRegistry, PermissionChecker, Permission
from services.infrastructure.database import DatabaseService
from services.infrastructure.logger import get_logger
logger = get_logger(__name__)
# Глобальный реестр разрешений
_permission_registry: Optional[PermissionRegistry] = None
_permission_checker: Optional[PermissionChecker] = None
def get_permission_registry() -> PermissionRegistry:
"""
Получение глобального реестра разрешений
Returns:
Глобальный экземпляр реестра разрешений
"""
global _permission_registry
if _permission_registry is None:
_permission_registry = PermissionRegistry()
logger.info("Создан глобальный реестр разрешений")
return _permission_registry
def get_permission_checker() -> Optional[PermissionChecker]:
"""
Получение глобального проверщика разрешений
Returns:
Глобальный экземпляр проверщика разрешений или None если не инициализирован
"""
return _permission_checker
def init_permission_checker(database: DatabaseService, config) -> PermissionChecker:
"""
Инициализация глобального проверщика разрешений
Args:
database: Сервис базы данных
config: Конфигурация приложения
Returns:
Инициализированный проверщик разрешений
"""
global _permission_checker
registry = get_permission_registry()
_permission_checker = PermissionChecker(registry, database, config)
logger.info("Инициализирован глобальный проверщик разрешений")
return _permission_checker
def register_permission(permission: Permission) -> None:
"""
Регистрация разрешения в глобальном реестре
Args:
permission: Разрешение для регистрации
"""
registry = get_permission_registry()
registry.register(permission)