diff options
Diffstat (limited to 'models')
| -rw-r--r-- | models/__init__.py | 11 | ||||
| -rw-r--r-- | models/announcement.py | 18 | ||||
| -rw-r--r-- | models/base.py | 14 | ||||
| -rw-r--r-- | models/invoce.py | 13 | ||||
| -rw-r--r-- | models/payment.py | 16 | ||||
| -rw-r--r-- | models/user.py | 9 |
6 files changed, 81 insertions, 0 deletions
diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..70c841d --- /dev/null +++ b/models/__init__.py | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | # isort: off | ||
| 2 | from .base import BaseTable | ||
| 3 | from .user import User | ||
| 4 | from .invoce import Invoice | ||
| 5 | # isort: on | ||
| 6 | |||
| 7 | __all__ = [ | ||
| 8 | "BaseTable", | ||
| 9 | "User", | ||
| 10 | "Invoice", | ||
| 11 | ] | ||
diff --git a/models/announcement.py b/models/announcement.py new file mode 100644 index 0000000..5f752d7 --- /dev/null +++ b/models/announcement.py | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | from aiogram.types import MessageEntity | ||
| 2 | from pydantic import BaseModel | ||
| 3 | from sqlalchemy import JSON | ||
| 4 | from sqlalchemy.orm import Mapped, mapped_column | ||
| 5 | |||
| 6 | from models import BaseTable | ||
| 7 | |||
| 8 | |||
| 9 | class Message(BaseModel): | ||
| 10 | text: str | ||
| 11 | entities: list[MessageEntity] = [] | ||
| 12 | |||
| 13 | |||
| 14 | class Announcement(BaseTable): | ||
| 15 | __tablename__ = "announcement" | ||
| 16 | |||
| 17 | id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) | ||
| 18 | message: Mapped[str] = mapped_column(JSON()) | ||
diff --git a/models/base.py b/models/base.py new file mode 100644 index 0000000..98f3c95 --- /dev/null +++ b/models/base.py | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | from sqlalchemy import MetaData | ||
| 2 | from sqlalchemy.orm import DeclarativeBase | ||
| 3 | |||
| 4 | |||
| 5 | class BaseTable(DeclarativeBase): | ||
| 6 | metadata = MetaData( | ||
| 7 | naming_convention={ | ||
| 8 | "ix": "ix_%(column_0_label)s", | ||
| 9 | "uq": "uq_%(table_name)s_%(column_0_name)s", | ||
| 10 | "ck": "ck_%(table_name)s_%(constraint_name)s", | ||
| 11 | "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", | ||
| 12 | "pk": "pk_%(table_name)s", | ||
| 13 | } | ||
| 14 | ) | ||
diff --git a/models/invoce.py b/models/invoce.py new file mode 100644 index 0000000..54a445e --- /dev/null +++ b/models/invoce.py | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | from datetime import datetime | ||
| 2 | |||
| 3 | from sqlalchemy.orm import Mapped, mapped_column | ||
| 4 | |||
| 5 | from models import BaseTable | ||
| 6 | |||
| 7 | |||
| 8 | class Invoice(BaseTable): | ||
| 9 | __tablename__ = "invoice" | ||
| 10 | |||
| 11 | id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) | ||
| 12 | amount: Mapped[float] | ||
| 13 | datetime: Mapped[datetime] | ||
diff --git a/models/payment.py b/models/payment.py new file mode 100644 index 0000000..2b1cb90 --- /dev/null +++ b/models/payment.py | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | from datetime import datetime | ||
| 2 | |||
| 3 | from sqlalchemy import ForeignKey | ||
| 4 | from sqlalchemy.orm import Mapped, mapped_column | ||
| 5 | |||
| 6 | from models import BaseTable, Invoice, User | ||
| 7 | |||
| 8 | |||
| 9 | class Payment(BaseTable): | ||
| 10 | __tablename__ = "payment" | ||
| 11 | |||
| 12 | id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) | ||
| 13 | user_id: Mapped[int] = mapped_column(ForeignKey(User.id)) | ||
| 14 | invoice_id: Mapped[int] = mapped_column(ForeignKey(Invoice.id)) | ||
| 15 | receipt_file_id: Mapped[str] | ||
| 16 | datetime: Mapped[datetime] | ||
diff --git a/models/user.py b/models/user.py new file mode 100644 index 0000000..7118725 --- /dev/null +++ b/models/user.py | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | from sqlalchemy.orm import Mapped, mapped_column | ||
| 2 | |||
| 3 | from models import BaseTable | ||
| 4 | |||
| 5 | |||
| 6 | class User(BaseTable): | ||
| 7 | __tablename__ = "user" | ||
| 8 | |||
| 9 | id: Mapped[int] = mapped_column(primary_key=True, autoincrement=False) | ||
