66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
import logging
|
|
import sqlite3
|
|
|
|
from db import conn
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class Notification:
|
|
id: int
|
|
id_transaction: int
|
|
pushover_receipt: str
|
|
acknowledged: bool
|
|
expired: bool
|
|
ts_update: datetime
|
|
ts_insert: datetime
|
|
|
|
|
|
class NotificationManager:
|
|
def __init__(self, log: logging.Logger, db_conn: sqlite3.Connection):
|
|
self.__log = log
|
|
self.__db_conn = db_conn
|
|
|
|
def insert_notification(self, notification: Notification) -> Notification:
|
|
now = datetime.now()
|
|
result = self.__db_conn.execute(
|
|
"""
|
|
INSERT INTO notification (
|
|
id_transaction,
|
|
pushover_receipt,
|
|
acknowledged,
|
|
expired,
|
|
ts_update,
|
|
ts_insert
|
|
) VALUES (
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?
|
|
) RETURNING id;
|
|
""",
|
|
(
|
|
notification.id_transaction,
|
|
notification.pushover_receipt,
|
|
notification.acknowledged,
|
|
notification.expired,
|
|
now.strftime("%s"),
|
|
now.strftime("%s"),
|
|
),
|
|
).fetchone()
|
|
|
|
self.__db_conn.commit()
|
|
|
|
return Notification(
|
|
id=result[0],
|
|
id_transaction=notification.id_transaction,
|
|
pushover_receipt=notification.pushover_receipt,
|
|
acknowledged=notification.acknowledged,
|
|
expired=notification.expired,
|
|
ts_update=now,
|
|
ts_insert=now,
|
|
)
|