Device
This commit is contained in:
109
backend/modules/device/controller.py
Normal file
109
backend/modules/device/controller.py
Normal file
@@ -0,0 +1,109 @@
|
||||
# pyrefly: ignore [missing-import]
|
||||
from flask import request
|
||||
from common.response.api_response import success_response
|
||||
from common.constants.status_code import HTTP_CREATED
|
||||
from modules.device.service import (
|
||||
get_devices_service,
|
||||
get_device_by_id_service,
|
||||
create_device_service,
|
||||
update_device_service,
|
||||
delete_device_service
|
||||
)
|
||||
from modules.device.schemas import CreateDeviceSchema, UpdateDeviceSchema
|
||||
|
||||
|
||||
def get_devices():
|
||||
"""GET /api/devices — Lấy danh sách tất cả các thiết bị mạng"""
|
||||
devices = get_devices_service()
|
||||
return success_response(
|
||||
data=devices,
|
||||
message="Devices retrieved successfully"
|
||||
)
|
||||
|
||||
|
||||
def get_device_by_id(device_id):
|
||||
"""GET /api/devices/<device_id> — Lấy chi tiết thiết bị theo ID"""
|
||||
device = get_device_by_id_service(device_id)
|
||||
return success_response(
|
||||
data=device,
|
||||
message="Device retrieved successfully"
|
||||
)
|
||||
|
||||
|
||||
def create_device():
|
||||
"""
|
||||
POST /api/devices — Thêm mới một thiết bị mạng
|
||||
"""
|
||||
body = request.get_json()
|
||||
|
||||
# Validate bằng schema
|
||||
schema = CreateDeviceSchema()
|
||||
data = schema.load(body)
|
||||
|
||||
# Gọi service xử lý logic nghiệp vụ
|
||||
new_device = create_device_service(data)
|
||||
|
||||
return success_response(
|
||||
data=new_device,
|
||||
message="Device created successfully",
|
||||
status_code=HTTP_CREATED
|
||||
)
|
||||
|
||||
|
||||
def update_device(device_id):
|
||||
"""
|
||||
PUT /api/devices/<device_id> — Cập nhật thông tin thiết bị mạng
|
||||
"""
|
||||
body = request.get_json()
|
||||
|
||||
# Validate bằng schema
|
||||
schema = UpdateDeviceSchema()
|
||||
data = schema.load(body)
|
||||
|
||||
# Gọi service để kiểm tra và cập nhật DB
|
||||
updated_device = update_device_service(device_id, data)
|
||||
|
||||
return success_response(
|
||||
data=updated_device,
|
||||
message="Device updated successfully"
|
||||
)
|
||||
|
||||
|
||||
def delete_device(device_id):
|
||||
"""
|
||||
DELETE /api/devices/<device_id> — Xóa thiết bị mạng khỏi hệ thống
|
||||
"""
|
||||
delete_device_service(device_id)
|
||||
return success_response(
|
||||
message="Device deleted successfully"
|
||||
)
|
||||
|
||||
|
||||
# def upload_device_avatar_controller(device_id):
|
||||
# """
|
||||
# POST /api/devices/<device_id>/avatar — Upload ảnh đại diện thiết bị lên S3/MinIO
|
||||
# và cập nhật URL vào database.
|
||||
# """
|
||||
# # 1. Kiểm tra tồn tại của thiết bị
|
||||
# device = get_device_by_id_service(device_id)
|
||||
|
||||
# # 2. Lấy file ảnh từ request.files
|
||||
# file = request.files.get("file")
|
||||
# if not file:
|
||||
# raise BadRequestException("Missing image file in request")
|
||||
|
||||
# try:
|
||||
# # 3. Thực hiện upload lên S3/MinIO
|
||||
# avatar_url = upload_device_avatar(file, device["name"])
|
||||
|
||||
# # 4. Cập nhật trường avatar_url của thiết bị trong DB
|
||||
# updated_device = update_device_service(device_id, {"avatar_url": avatar_url})
|
||||
|
||||
# return success_response(
|
||||
# data=updated_device,
|
||||
# message="Device avatar uploaded successfully",
|
||||
# status_code=HTTP_CREATED
|
||||
# )
|
||||
# except ValueError as e:
|
||||
# # ValidationError trong quá trình validate loại file
|
||||
# raise BadRequestException(str(e))
|
||||
Reference in New Issue
Block a user