add user? new page? new web

This commit is contained in:
2026-03-23 21:28:10 +05:00
parent 04bfff3d3f
commit 9cd6d83428
26 changed files with 917 additions and 65 deletions

View File

@@ -1,14 +1,16 @@
from fastapi import APIRouter, HTTPException
from fastapi import APIRouter, Depends, HTTPException
import pkgutil
import importlib
from pathlib import Path
from typing import List
from bd import Settings
from sqlalchemy import create_engine
from sqlalchemy import create_engine, text
from sqlalchemy.exc import SQLAlchemyError
from pydantic import BaseModel
from route.auth_utils import require_admin_key
router = APIRouter(tags=["db"])
@@ -40,7 +42,7 @@ def collect_metadatas():
return metadatas
@router.post("/db/create-tables")
@router.post("/db/create-tables", dependencies=[Depends(require_admin_key)])
async def create_tables():
"""Создаёт все таблицы, описанные в модулях `db.tables`.
@@ -70,11 +72,29 @@ async def create_tables():
raise HTTPException(status_code=500, detail=str(e))
@router.post("/db/migrate-users", dependencies=[Depends(require_admin_key)])
async def migrate_users():
"""Добавляет колонки username и hashed_password в таблицу users, если они ещё не существуют."""
settings = Settings()
engine = create_engine(settings.DATABASE_URL_syncpg, future=True)
try:
with engine.connect() as conn:
conn.execute(text("""
ALTER TABLE users
ADD COLUMN IF NOT EXISTS username VARCHAR(150),
ADD COLUMN IF NOT EXISTS hashed_password VARCHAR(256)
"""))
conn.commit()
return {"status": "ok", "detail": "Columns username and hashed_password ensured in users table"}
except SQLAlchemyError as e:
raise HTTPException(status_code=500, detail=str(e))
class ClearDBIn(BaseModel):
confirm: bool
@router.post("/db/clear")
@router.post("/db/clear", dependencies=[Depends(require_admin_key)])
async def clear_tables(payload: ClearDBIn):
"""Полная очистка всех таблиц, описанных в `bd.tables`.