Refactor and implement queueing messages

This commit is contained in:
2025-02-12 18:45:21 +00:00
parent 213df9176e
commit 018d2f87c7
23 changed files with 804 additions and 338 deletions

0
core/db/__init__.py Normal file
View File

63
core/db/sql.py Normal file
View File

@@ -0,0 +1,63 @@
import aiomysql
from core.util import logs
from core.schemas import mc_s
mysql_pool = None
log = logs.get_logger("sql")
DB_URL = "giadb"
async def init_mysql_pool():
"""
Initialize the MySQL connection pool.
"""
global mysql_pool
mysql_pool = await aiomysql.create_pool(
host=DB_URL,
port=9306,
db="Manticore",
minsize=1,
maxsize=10
)
async def close_mysql_pool():
"""Close the MySQL connection pool properly."""
global mysql_pool
if mysql_pool:
mysql_pool.close()
await mysql_pool.wait_closed()
async def create_index():
schemas = {
"main": mc_s.schema_main,
# "rule_storage": mc_s.schema_rule_storage,
# "meta": mc_s.schema_meta,
# "internal": mc_s.schema_int,
}
try:
async with mysql_pool.acquire() as conn:
async with conn.cursor() as cur:
for name, schema in schemas.items():
schema_types = ", ".join([f"{k} {v}" for k, v in schema.items()])
create_query = (
f"create table if not exists {name}({schema_types}) engine='columnar'"
)
log.info(f"Schema types {create_query}")
await cur.execute(create_query) # SQLi
except aiomysql.Error as e:
log.error(f"MySQL error: {e}")
async def main():
await init_mysql_pool()
created = False
while not created:
try:
await create_index()
created = True
except Exception as e:
log.error(f"Error creating index: {e}")
await asyncio.sleep(1) # Block the thread, just wait for the DB