支持设备定时定位上报与OTA通道选择
This commit is contained in:
@@ -33,13 +33,30 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
|
||||
return {
|
||||
"device_id": row.device_id,
|
||||
"firmware_version": row.firmware_version,
|
||||
"ota_channel": getattr(row, "ota_channel", None),
|
||||
"target_version": getattr(row, "target_version", None),
|
||||
"firmware_url": getattr(row, "firmware_url", None),
|
||||
"firmware_id": getattr(row, "firmware_id", None),
|
||||
"source": getattr(row, "source", None),
|
||||
"update_status": row.update_status,
|
||||
"progress": row.progress,
|
||||
"created_at": row.created_at,
|
||||
"updated_at": row.updated_at,
|
||||
}
|
||||
|
||||
async def create_firmware_update(self, device_id: str, firmware_version: str, update_status: str = "success", progress: float = 0.0):
|
||||
async def create_firmware_update(
|
||||
self,
|
||||
device_id: str,
|
||||
firmware_version: str,
|
||||
update_status: str = "success",
|
||||
progress: float = 0.0,
|
||||
*,
|
||||
ota_channel: str | None = None,
|
||||
target_version: str | None = None,
|
||||
firmware_url: str | None = None,
|
||||
firmware_id: int | None = None,
|
||||
source: str | None = None,
|
||||
):
|
||||
"""新增固件更新记录"""
|
||||
await self._init_database()
|
||||
db_session = await self.get_session()
|
||||
@@ -55,7 +72,12 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
|
||||
.values(
|
||||
firmware_version=firmware_version,
|
||||
update_status=update_status,
|
||||
progress=progress
|
||||
progress=progress,
|
||||
ota_channel=ota_channel,
|
||||
target_version=target_version,
|
||||
firmware_url=firmware_url,
|
||||
firmware_id=firmware_id,
|
||||
source=source,
|
||||
)
|
||||
)
|
||||
await db_session.execute(update_stmt)
|
||||
@@ -66,7 +88,12 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
|
||||
serial_number=serial_number,
|
||||
firmware_version=firmware_version,
|
||||
update_status=update_status,
|
||||
progress=progress
|
||||
progress=progress,
|
||||
ota_channel=ota_channel,
|
||||
target_version=target_version,
|
||||
firmware_url=firmware_url,
|
||||
firmware_id=firmware_id,
|
||||
source=source,
|
||||
)
|
||||
await db_session.execute(insert_stmt)
|
||||
|
||||
@@ -75,6 +102,11 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
|
||||
self._update_cache(device_id, {
|
||||
"device_id": device_id,
|
||||
"firmware_version": firmware_version,
|
||||
"ota_channel": ota_channel,
|
||||
"target_version": target_version,
|
||||
"firmware_url": firmware_url,
|
||||
"firmware_id": firmware_id,
|
||||
"source": source,
|
||||
"update_status": update_status,
|
||||
"progress": progress
|
||||
})
|
||||
@@ -113,6 +145,12 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
|
||||
firmware_version: str,
|
||||
update_status: str,
|
||||
progress: Optional[float] = None,
|
||||
*,
|
||||
ota_channel: str | None = None,
|
||||
target_version: str | None = None,
|
||||
firmware_url: str | None = None,
|
||||
firmware_id: int | None = None,
|
||||
source: str | None = None,
|
||||
) -> bool:
|
||||
"""更新设备固件信息(支持部分字段更新)"""
|
||||
await self._init_database()
|
||||
@@ -124,6 +162,14 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
|
||||
}
|
||||
if progress is not None:
|
||||
update_values["progress"] = progress
|
||||
optional_values = {
|
||||
"ota_channel": ota_channel,
|
||||
"target_version": target_version,
|
||||
"firmware_url": firmware_url,
|
||||
"firmware_id": firmware_id,
|
||||
"source": source,
|
||||
}
|
||||
update_values.update({key: value for key, value in optional_values.items() if value is not None})
|
||||
|
||||
query = select(DeviceFirmwareUpdate).where(DeviceFirmwareUpdate.device_id == device_id)
|
||||
result = await db_session.execute(query)
|
||||
@@ -144,6 +190,11 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
|
||||
firmware_version=firmware_version,
|
||||
update_status=update_status,
|
||||
progress=progress if progress is not None else 0.0,
|
||||
ota_channel=ota_channel,
|
||||
target_version=target_version,
|
||||
firmware_url=firmware_url,
|
||||
firmware_id=firmware_id,
|
||||
source=source,
|
||||
)
|
||||
await db_session.execute(insert_stmt)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user