Files
AI_Translator/apps/api/scripts/init_db.py
2025-12-25 18:41:09 +08:00

53 lines
1.4 KiB
Python

import asyncio
from sqlalchemy.ext.asyncio import create_async_engine
from app.models import Base, Admin
from app.services import hash_password
from app.core import get_settings
settings = get_settings()
async def init_db():
engine = create_async_engine(settings.database_url)
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
print("Tables created.")
async def create_admin(username: str, password: str):
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import sessionmaker
from sqlalchemy import select
engine = create_async_engine(settings.database_url)
AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession)
async with AsyncSessionLocal() as session:
result = await session.execute(
select(Admin).where(Admin.username == username)
)
if result.scalar_one_or_none():
print(f"Admin '{username}' already exists.")
return
admin = Admin(
username=username,
password_hash=hash_password(password),
)
session.add(admin)
await session.commit()
print(f"Admin '{username}' created.")
if __name__ == "__main__":
import sys
asyncio.run(init_db())
if len(sys.argv) >= 3:
asyncio.run(create_admin(sys.argv[1], sys.argv[2]))
else:
asyncio.run(create_admin("admin", "admin123"))