Added migrations

This commit is contained in:
Profitroll 2023-08-18 20:43:09 +02:00
parent 32260e95a7
commit 24a2837f34
Signed by: profitroll
GPG Key ID: FA35CAB49DACD3B2
5 changed files with 62 additions and 19 deletions

17
commands.json Normal file
View File

@ -0,0 +1,17 @@
{
"start": {
"scopes": [
{
"name": "BotCommandScopeDefault"
}
]
},
"remove_commands": {
"scopes": [
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
}
}

View File

@ -19,22 +19,5 @@
"reports": {
"chat_id": "owner"
},
"disabled_plugins": [],
"commands": {
"start": {
"scopes": [
{
"name": "BotCommandScopeDefault"
}
]
},
"remove_commands": {
"scopes": [
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
}
}
"disabled_plugins": []
}

22
main.py
View File

@ -1,9 +1,13 @@
import contextlib
import logging
from argparse import ArgumentParser
from os import getpid
from pathlib import Path
from libbot import sync
from libbot.pyrogram.classes import PyroClient
from modules.migrator import migrate_database
from modules.scheduler import scheduler
# Uncomment this and the line below client declaration
@ -21,6 +25,16 @@ logging.basicConfig(
logger = logging.getLogger(__name__)
parser = ArgumentParser(
prog="__name__",
description="__description__",
)
# Remove if no database is being used
parser.add_argument("--migrate", action="store_true")
args = parser.parse_args()
with contextlib.suppress(ImportError):
import uvloop
@ -28,9 +42,15 @@ with contextlib.suppress(ImportError):
def main():
client = PyroClient(scheduler=scheduler)
client = PyroClient(
scheduler=scheduler, commands_source=sync.json_read(Path("commands.json"))
)
# Conversation(client)
# Remove if no database is being used
if args.migrate:
migrate_database()
try:
client.run()
except KeyboardInterrupt:

22
modules/migrator.py Normal file
View File

@ -0,0 +1,22 @@
from typing import Any, Mapping
from libbot.sync import config_get
from mongodb_migrations.cli import MigrationManager
from mongodb_migrations.config import Configuration
def migrate_database() -> None:
"""Apply migrations from folder `migrations/` to the database"""
db_config: Mapping[str, Any] = config_get("database")
manager_config = Configuration(
{
"mongo_host": db_config["host"],
"mongo_port": db_config["port"],
"mongo_database": db_config["name"],
"mongo_username": db_config["user"],
"mongo_password": db_config["password"],
}
)
manager = MigrationManager(manager_config)
manager.run()

View File

@ -1,5 +1,6 @@
apscheduler~=3.10.3
convopyro==0.5
mongodb-migrations==1.3.0
pykeyboard==0.1.5
tgcrypto==1.2.5
uvloop==0.17.0