diff options
-rw-r--r-- | ATRI/database/__init__.py | 1 | ||||
-rw-r--r-- | ATRI/database/db.py | 82 | ||||
-rw-r--r-- | ATRI/database/models.py | 22 |
3 files changed, 0 insertions, 105 deletions
diff --git a/ATRI/database/__init__.py b/ATRI/database/__init__.py deleted file mode 100644 index 6840881..0000000 --- a/ATRI/database/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .db import DB diff --git a/ATRI/database/db.py b/ATRI/database/db.py deleted file mode 100644 index 68db8cf..0000000 --- a/ATRI/database/db.py +++ /dev/null @@ -1,82 +0,0 @@ -from pathlib import Path -from tortoise import Tortoise -from nonebot import get_driver - -from ATRI.database import models - - -DB_DIR = Path(".") / "data" / "database" / "sql" -DB_DIR.mkdir(exist_ok=True) - - -# 关于数据库的操作类,只实现与数据库有关的CRUD -# 请不要把业务逻辑写进去 -class DB: - async def __aenter__(self): - return self - - async def __aexit__(self, exc_type, exc_val, exc_tb): - pass - - async def init(self): - from ATRI.database import models - - await Tortoise.init( - db_url=f"sqlite://{DB_DIR}/db.sqlite3", - modules={"models": [locals()["models"]]}, - ) - # Generate the schema - await Tortoise.generate_schemas() - - async def add_subscription(self, uid: int, groupid: int) -> bool: - try: - _ = await models.Subscription.create(uid=uid, groupid=groupid) - return True - except: - return False - - async def get_all_subscriptions_by_gid(self, groupid: int) -> list: - try: - subs = await self.get_subscriptions(query_map={"groupid": groupid}) - return subs - except: - return [] - - async def remove_subscription(self, query_map: dict) -> bool: - try: - ret = await models.Subscription.filter(**query_map).delete() - return True - except: - return False - - async def get_subscriptions(self, query_map: dict) -> list: - try: - ret = await models.Subscription.filter(**query_map) - return ret - except: - return [] - - async def get_all_subscriptions(self) -> list: - try: - ret = await models.Subscription.all() - return ret - except: - return [] - - async def update_subscriptions_by_uid(self, uid: int, update_map: dict) -> bool: - try: - # why use ** ? - # Reference: https://stackoverflow.com/questions/5710391/converting-python-dict-to-kwargs - _ = await models.Subscription.filter(uid=uid).update(**update_map) - return True - except: - return False - - -async def init(): - async with DB() as db: - await db.init() - - -driver = get_driver() -driver.on_startup(init) diff --git a/ATRI/database/models.py b/ATRI/database/models.py deleted file mode 100644 index b3953df..0000000 --- a/ATRI/database/models.py +++ /dev/null @@ -1,22 +0,0 @@ -""" - 定义SQLITE数据库的关系模式(表) - 数据库采用了tortoise orm,可以很好地支持异步 -""" - -from tortoise.models import Model -from tortoise import fields -from datetime import datetime - -# b站订阅表 -class Subscription(Model): - uid = fields.IntField(pk=True) # up的uid - groupid = fields.IntField() # 群号 - nickname = fields.TextField(null=True) # 订阅up的名称 - last_update = fields.DatetimeField( - default=datetime.fromordinal(1) - ) # 上一条动态更新时间 默认0001-01-01 00:00:00 - - def __str__(self): - return "[{nickname}|{uid}|{groupid}]".format( - nickname=self.nickname, uid=self.uid, groupid=self.groupid - ) |