Files
2026-07-17 12:57:18 +03:00

32 lines
1.2 KiB
Python

from sqlalchemy import Column, DateTime, String, Text
from app import db
from .base import TimestampMixin, default_uuid
class KioskDevice(db.Model, TimestampMixin):
"""Persistent registry of kiosk terminals."""
__tablename__ = "kiosk_device"
id = Column(String(36), primary_key=True, default=default_uuid)
device_fingerprint = Column(String(255), nullable=True)
display_name = Column(String(120), nullable=False, default="terminal")
status = Column(String(20), nullable=False, default="pending") # pending|active|revoked
access_slug = Column(String(64), nullable=True, unique=True, index=True)
last_seen_at = Column(DateTime, nullable=True)
last_ip = Column(String(45), nullable=True)
class KioskPairToken(db.Model):
"""One-time short-lived token for QR pairing."""
__tablename__ = "kiosk_pair_token"
id = Column(String(36), primary_key=True, default=default_uuid)
token = Column(String(255), nullable=False, unique=True, index=True)
device_id = Column(String(36), nullable=False, index=True)
expires_at = Column(DateTime, nullable=False)
used_at = Column(DateTime, nullable=True)
issued_for = Column(Text, nullable=True)