From b1a78c026ec409bea48d767b65b5b7e4e182d904 Mon Sep 17 00:00:00 2001 From: Kyomotoi Date: Tue, 14 Jun 2022 21:12:20 +0800 Subject: =?UTF-8?q?=F0=9F=9A=9A=F0=9F=92=A9=20=E6=9B=B4=E6=94=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E4=BD=8D=E7=BD=AE=20&=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ATRI/database/__init__.py | 2 ++ ATRI/database/db.py | 27 +++++++++++++++++++++++++++ ATRI/database/models.py | 19 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 ATRI/database/__init__.py create mode 100644 ATRI/database/db.py create mode 100644 ATRI/database/models.py (limited to 'ATRI/database') diff --git a/ATRI/database/__init__.py b/ATRI/database/__init__.py new file mode 100644 index 0000000..6c58d20 --- /dev/null +++ b/ATRI/database/__init__.py @@ -0,0 +1,2 @@ +from .db import init_database +from .models import BilibiliSubscription, TwitterSubscription diff --git a/ATRI/database/db.py b/ATRI/database/db.py new file mode 100644 index 0000000..6e20ad3 --- /dev/null +++ b/ATRI/database/db.py @@ -0,0 +1,27 @@ +from pathlib import Path +from tortoise import Tortoise, run_async + +from ATRI.log import logger as log + + +# 临时的实现,寻求更好的方式!欢迎pr + + +DB_DIR = Path(".") / "data" / "sql" +DB_DIR.mkdir(parents=True, exist_ok=True) + + +async def run(): + from ATRI.database import models + + await Tortoise.init( + db_url=f"sqlite://{DB_DIR}/db.sqlite3", + modules={"models": [locals()["models"]]}, + ) + await Tortoise.generate_schemas() + + +def init_database(): + log.info("正在初始化数据库...") + run_async(run()) + log.success("数据库初始化完成") diff --git a/ATRI/database/models.py b/ATRI/database/models.py new file mode 100644 index 0000000..e268f01 --- /dev/null +++ b/ATRI/database/models.py @@ -0,0 +1,19 @@ +from datetime import datetime + +from tortoise import fields +from tortoise.models import Model + + +class BilibiliSubscription(Model): + uid = fields.IntField() + group_id = fields.IntField() + up_nickname = fields.TextField(null=True) + last_update = fields.DatetimeField(default=datetime.fromordinal(1)) + + +class TwitterSubscription(Model): + tid = fields.IntField() + group_id = fields.IntField() + name = fields.TextField(null=True) + screen_name = fields.TextField(null=True) + last_update = fields.DatetimeField(default=datetime.fromordinal(1)) -- cgit v1.2.3