Spaces:
Running
Running
from sqlalchemy import Column, Integer, String, Float, DateTime, Boolean | |
import uuid | |
from pydantic import BaseModel | |
from typing import List | |
from database import Base | |
class User(Base): | |
__tablename__ = "users" | |
id = Column(Integer, primary_key=True, index=True) | |
username = Column(String, unique=True, index=True) | |
email = Column(String, unique=True, index=True) | |
password = Column(String) | |
is_admin = Column(Boolean, default=False) | |
last_login = Column(DateTime, nullable=True) | |
is_active = Column(Boolean, default=True) | |
class StatusRecord(Base): | |
__tablename__ = "status_records" | |
id = Column(Integer, primary_key=True, index=True) | |
uuid = Column(String, unique=True, default=lambda: str(uuid.uuid4())) | |
device_id = Column(String, index=True) | |
latitude = Column(Float) | |
longitude = Column(Float) | |
timestamp = Column(DateTime) | |
connect_status = Column(Integer) # 0 or 1 | |
class SystemSetting(Base): | |
__tablename__ = "system_settings" | |
id = Column(Integer, primary_key=True, index=True) | |
check_connect_period = Column(Integer, default=10) | |
data_sync_period = Column(Integer, default=3600) | |
get_config_period = Column(Integer, default=60) | |
point_distance = Column(Integer, default=5) | |
class Device(Base): | |
__tablename__ = "devices" | |
id = Column(Integer, primary_key=True, index=True) | |
name = Column(String) | |
description = Column(String) | |
device_id = Column(String, unique=True, index=True) | |
password = Column(String) | |
class StatusRecordCreate(BaseModel): | |
uuid: str | |
latitude: float | |
longitude: float | |
timestamp: str | |
connect_status: int | |
class StatusRecordBatch(BaseModel): | |
records: List[StatusRecordCreate] |