38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from datetime import datetime
|
|
|
|
from sqlalchemy import BigInteger, Boolean, Column, DateTime, Integer, String
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from ._base import Base, DictLikeMixin
|
|
|
|
|
|
class Tariff(DictLikeMixin, Base):
|
|
__tablename__ = "tariffs"
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
group_code = Column(String)
|
|
duration_days = Column(Integer)
|
|
price_rub = Column(Integer)
|
|
traffic_limit = Column(BigInteger, nullable=True)
|
|
device_limit = Column(Integer, nullable=True)
|
|
is_active = Column(Boolean, default=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
updated_at = Column(DateTime, default=datetime.utcnow)
|
|
subgroup_title = Column(String, nullable=True)
|
|
sort_order = Column(Integer, nullable=True)
|
|
vless = Column(Boolean, default=False)
|
|
external_squad: Mapped[str | None] = mapped_column(String(64), nullable=True)
|
|
|
|
configurable = Column(Boolean, nullable=False, server_default="false")
|
|
|
|
device_options = Column(JSONB, nullable=True)
|
|
traffic_options_gb = Column(JSONB, nullable=True)
|
|
|
|
device_step_rub = Column(Integer, nullable=True)
|
|
device_overrides = Column(JSONB, nullable=True)
|
|
|
|
traffic_step_rub = Column(Integer, nullable=True)
|
|
traffic_overrides = Column(JSONB, nullable=True)
|