Files
QuangMinh_123 2683cdb882 Device
2026-05-27 13:50:27 +07:00

110 lines
3.2 KiB
Python

# 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))