Files
malenia-backend/db/models/subscriptions.py

34 lines
1.2 KiB
Python

import datetime
from typing import TYPE_CHECKING
from sqlalchemy import INTEGER, DateTime, Enum, ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from db.base import Base
from schemas.enums import SubscriptionStatus
if TYPE_CHECKING:
from db.models import SubscriptionAddon, User
class Subscription(Base):
__tablename__ = "subscriptions"
id: Mapped[int] = mapped_column(
INTEGER, nullable=False, autoincrement=True, unique=True, primary_key=True
)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), nullable=False, unique=True)
devices: Mapped[int] = mapped_column(INTEGER, nullable=False)
status: Mapped[SubscriptionStatus] = mapped_column(
Enum(SubscriptionStatus, name="subscriptionstatus"),
nullable=False,
default=SubscriptionStatus.EXPIRED,
)
expires_at: Mapped[datetime.datetime] = mapped_column(DateTime(True), nullable=False)
user: Mapped["User"] = relationship("User", back_populates="subscription", lazy="selectin")
addons: Mapped[list["SubscriptionAddon"]] = relationship(
"SubscriptionAddon", back_populates="subscription", lazy="selectin"
)