summaryrefslogtreecommitdiff
path: root/ATRI/plugins/bilibili_dynamic/database/db.py
blob: 37ed2236deff92737179c4ca820545975ed87a99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from pathlib import Path
from tortoise import Tortoise

from ATRI import driver
from .models import Subscription


DB_DIR = Path(".") / "data" / "database" / "bilibili_dynamic"
DB_DIR.mkdir(parents=True, exist_ok=True)


class DB:
    async def __aenter__(self):
        return self

    async def __aexit__(self, exc_type, exc_val, exc_tb):
        pass

    async def init(self):
        from . import models

        await Tortoise.init(
            db_url=f"sqlite://{DB_DIR}/db.sqlite3",
            modules={"models": [locals()["models"]]},
        )
        await Tortoise.generate_schemas()

    async def add_sub(self, uid: int, group_id: int):
        await Subscription.create(uid=uid, group_id=group_id)

    async def update_sub(self, uid: int, update_map: dict):
        await Subscription.filter(uid=uid).update(**update_map)

    async def del_sub(self, query_map: dict):
        await Subscription.filter(**query_map).delete()

    async def get_sub_list(self, query_map: dict) -> list:
        return await Subscription.filter(**query_map)

    async def get_all_subs(self) -> list:
        return await Subscription.all()


async def init():
    async with DB() as db:
        await db.init()


driver().on_startup(init)