초기 커밋
This commit is contained in:
36
app/models/mariadb/device.py
Normal file
36
app/models/mariadb/device.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from sqlmodel import Field, Relationship, SQLModel
|
||||
|
||||
from app.core.constants import DeviceStatus
|
||||
from app.db.base import SoftDeleteMixin, TimestampMixin
|
||||
|
||||
|
||||
class DeviceGroup(TimestampMixin, SQLModel, table=True):
|
||||
__tablename__ = "device_groups"
|
||||
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
name: str = Field(max_length=100, unique=True)
|
||||
description: str = Field(default="", max_length=500)
|
||||
|
||||
devices: list[Device] = Relationship(back_populates="group")
|
||||
|
||||
|
||||
class Device(TimestampMixin, SoftDeleteMixin, SQLModel, table=True):
|
||||
__tablename__ = "devices"
|
||||
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
device_uid: str = Field(max_length=100, unique=True, index=True)
|
||||
name: str = Field(max_length=100)
|
||||
device_type: str = Field(default="", max_length=50)
|
||||
status: str = Field(default=DeviceStatus.OFFLINE, max_length=20)
|
||||
firmware_version: str = Field(default="", max_length=50)
|
||||
ip_address: str = Field(default="", max_length=45)
|
||||
group_id: int | None = Field(default=None, foreign_key="device_groups.id")
|
||||
owner_id: int | None = Field(default=None, foreign_key="users.id")
|
||||
last_seen_at: datetime | None = Field(default=None)
|
||||
metadata_json: str = Field(default="{}", max_length=2000)
|
||||
|
||||
group: DeviceGroup | None = Relationship(back_populates="devices")
|
||||
Reference in New Issue
Block a user