aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/__init__.py11
-rw-r--r--models/announcement.py18
-rw-r--r--models/base.py14
-rw-r--r--models/invoce.py13
-rw-r--r--models/payment.py16
-rw-r--r--models/user.py9
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
2from .base import BaseTable
3from .user import User
4from .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 @@
1from aiogram.types import MessageEntity
2from pydantic import BaseModel
3from sqlalchemy import JSON
4from sqlalchemy.orm import Mapped, mapped_column
5
6from models import BaseTable
7
8
9class Message(BaseModel):
10 text: str
11 entities: list[MessageEntity] = []
12
13
14class 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 @@
1from sqlalchemy import MetaData
2from sqlalchemy.orm import DeclarativeBase
3
4
5class 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 @@
1from datetime import datetime
2
3from sqlalchemy.orm import Mapped, mapped_column
4
5from models import BaseTable
6
7
8class 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 @@
1from datetime import datetime
2
3from sqlalchemy import ForeignKey
4from sqlalchemy.orm import Mapped, mapped_column
5
6from models import BaseTable, Invoice, User
7
8
9class 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 @@
1from sqlalchemy.orm import Mapped, mapped_column
2
3from models import BaseTable
4
5
6class User(BaseTable):
7 __tablename__ = "user"
8
9 id: Mapped[int] = mapped_column(primary_key=True, autoincrement=False)