44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
|
|
from ds.db import db
|
|||
|
|
from schema.device_action_schema import DeviceActionCreate, DeviceActionResponse
|
|||
|
|
from mysql.connector import Error as MySQLError
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 新增设备操作记录
|
|||
|
|
def add_device_action(client_ip: str, action: int) -> DeviceActionResponse:
|
|||
|
|
"""
|
|||
|
|
新增设备操作记录(内部方法、非接口)
|
|||
|
|
:param action_data: 含client_ip和action(0/1)
|
|||
|
|
:return: 新增的完整记录
|
|||
|
|
"""
|
|||
|
|
conn = None
|
|||
|
|
cursor = None
|
|||
|
|
try:
|
|||
|
|
conn = db.get_connection()
|
|||
|
|
cursor = conn.cursor(dictionary=True)
|
|||
|
|
|
|||
|
|
# 插入SQL(id自增、依赖数据库自动生成)
|
|||
|
|
insert_query = """
|
|||
|
|
INSERT INTO device_action
|
|||
|
|
(client_ip, action, created_at, updated_at)
|
|||
|
|
VALUES (%s, %s, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|||
|
|
"""
|
|||
|
|
cursor.execute(insert_query, (
|
|||
|
|
client_ip,
|
|||
|
|
action
|
|||
|
|
))
|
|||
|
|
conn.commit()
|
|||
|
|
|
|||
|
|
# 获取新增记录(通过自增ID查询)
|
|||
|
|
new_id = cursor.lastrowid
|
|||
|
|
cursor.execute("SELECT * FROM device_action WHERE id = %s", (new_id,))
|
|||
|
|
new_action = cursor.fetchone()
|
|||
|
|
|
|||
|
|
return DeviceActionResponse(**new_action)
|
|||
|
|
|
|||
|
|
except MySQLError as e:
|
|||
|
|
if conn:
|
|||
|
|
conn.rollback()
|
|||
|
|
raise Exception(f"新增记录失败: {str(e)}") from e
|
|||
|
|
finally:
|
|||
|
|
db.close_connection(conn, cursor)
|