49 lines
2.0 KiB
Python
49 lines
2.0 KiB
Python
from sqlalchemy.orm import Session
|
|
from typing import List
|
|
from app.services.auth.module_service import ModuleService
|
|
from app.schemas.auth.module_schema import ModuleCreate, ModuleUpdate, ModuleResponse
|
|
from app.models.auth.module_model import Module
|
|
|
|
class ModuleController:
|
|
@staticmethod
|
|
def list_modules(db: Session) -> List[ModuleResponse]:
|
|
modules = ModuleService.list_modules(db)
|
|
return [ModuleResponse.model_validate(m) for m in modules]
|
|
|
|
@staticmethod
|
|
def create_module(db: Session, module_data: ModuleCreate) -> ModuleResponse:
|
|
module = ModuleService.create_module(db, module_data)
|
|
return ModuleResponse.model_validate(module)
|
|
|
|
@staticmethod
|
|
def get_available_modules(db: Session, current_user) -> List[ModuleResponse]:
|
|
from app.schemas.auth.module_schema import ModuleAvailableResponse
|
|
results = ModuleService.get_available_modules(db, current_user.tenant_id)
|
|
|
|
response = []
|
|
for item in results:
|
|
mod = item["module"]
|
|
response.append(ModuleAvailableResponse(
|
|
module_id=mod.module_id,
|
|
module_name=mod.module_name,
|
|
description=mod.description,
|
|
icon_url=mod.icon_url,
|
|
display_order=mod.display_order or 0,
|
|
is_active=item["is_active"]
|
|
))
|
|
return response
|
|
|
|
@staticmethod
|
|
def get_module(db: Session, module_id: str) -> ModuleResponse:
|
|
module = ModuleService.get_module(db, module_id)
|
|
return ModuleResponse.model_validate(module)
|
|
|
|
@staticmethod
|
|
def update_module(db: Session, module_id: str, module_data: ModuleUpdate) -> ModuleResponse:
|
|
module = ModuleService.update_module(db, module_id, module_data)
|
|
return ModuleResponse.model_validate(module)
|
|
|
|
@staticmethod
|
|
def delete_module(db: Session, module_id: str):
|
|
ModuleService.delete_module(db, module_id)
|
|
return {"message": "Module deleted successfully"} |