aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/__init__.py2
-rw-r--r--models/callback_data.py5
-rw-r--r--models/invoce.py13
-rw-r--r--models/rich_text.py10
4 files changed, 26 insertions, 4 deletions
diff --git a/models/__init__.py b/models/__init__.py
index 9d56b33..0547429 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -5,6 +5,7 @@ from .user import User
5from .invoce import Invoice 5from .invoce import Invoice
6from .payment import Payment 6from .payment import Payment
7from .announcement import Announcement 7from .announcement import Announcement
8from . import callback_data
8# isort: on 9# isort: on
9 10
10__all__ = [ 11__all__ = [
@@ -14,4 +15,5 @@ __all__ = [
14 "Payment", 15 "Payment",
15 "RichText", 16 "RichText",
16 "Announcement", 17 "Announcement",
18 "callback_data",
17] 19]
diff --git a/models/callback_data.py b/models/callback_data.py
new file mode 100644
index 0000000..d3e6d61
--- /dev/null
+++ b/models/callback_data.py
@@ -0,0 +1,5 @@
1from aiogram.filters.callback_data import CallbackData
2
3
4class PayInvoiceData(CallbackData, prefix="pay_invoice"):
5 invoice_id: int
diff --git a/models/invoce.py b/models/invoce.py
index 54a445e..66ff019 100644
--- a/models/invoce.py
+++ b/models/invoce.py
@@ -1,13 +1,22 @@
1from datetime import datetime 1from datetime import datetime
2 2
3from sqlalchemy import JSON
3from sqlalchemy.orm import Mapped, mapped_column 4from sqlalchemy.orm import Mapped, mapped_column
4 5
5from models import BaseTable 6from models import BaseTable, RichText
6 7
7 8
8class Invoice(BaseTable): 9class Invoice(BaseTable):
9 __tablename__ = "invoice" 10 __tablename__ = "invoice"
10 11
11 id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) 12 id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
12 amount: Mapped[float] 13 __message: Mapped[str] = mapped_column("message", JSON())
13 datetime: Mapped[datetime] 14 datetime: Mapped[datetime]
15
16 @property
17 def message(self) -> RichText:
18 return RichText.model_validate_json(self.__message)
19
20 @message.setter
21 def message(self, value: RichText) -> None:
22 self.__message = value.model_dump_json()
diff --git a/models/rich_text.py b/models/rich_text.py
index e5441b6..6d1c1cb 100644
--- a/models/rich_text.py
+++ b/models/rich_text.py
@@ -1,7 +1,7 @@
1from typing import Self 1from typing import Self
2 2
3from aiogram import Bot 3from aiogram import Bot
4from aiogram.types import Message, MessageEntity 4from aiogram.types import Message, MessageEntity, ReplyMarkupUnion
5from pydantic import BaseModel 5from pydantic import BaseModel
6 6
7 7
@@ -34,10 +34,16 @@ class RichText(BaseModel):
34 34
35 return result 35 return result
36 36
37 async def send(self, bot: Bot, chat_id: int) -> Message: 37 async def send(
38 self,
39 bot: Bot,
40 chat_id: int,
41 reply_markup: ReplyMarkupUnion | None = None,
42 ) -> Message:
38 return await bot.send_message( 43 return await bot.send_message(
39 chat_id=chat_id, 44 chat_id=chat_id,
40 text=self.text, 45 text=self.text,
41 entities=self.entities, 46 entities=self.entities,
42 parse_mode=None, 47 parse_mode=None,
48 reply_markup=reply_markup,
43 ) 49 )