Add admin user management

This commit is contained in:
2026-04-03 12:23:44 +00:00
parent 3d37186fa7
commit 5168e52e4b
18 changed files with 989 additions and 19 deletions
+11 -1
View File
@@ -5,6 +5,8 @@ from logging.config import fileConfig
from alembic import context
from sqlalchemy import engine_from_config, pool
from app.core.config import get_settings
config = context.config
if config.config_file_name is not None:
@@ -13,8 +15,15 @@ if config.config_file_name is not None:
target_metadata = None
def _configure_database_url() -> str:
settings = get_settings()
database_url = settings.active_database_url
config.set_main_option("sqlalchemy.url", database_url.replace("%", "%%"))
return database_url
def run_migrations_offline() -> None:
url = config.get_main_option("sqlalchemy.url")
url = _configure_database_url()
context.configure(
url=url,
target_metadata=target_metadata,
@@ -27,6 +36,7 @@ def run_migrations_offline() -> None:
def run_migrations_online() -> None:
_configure_database_url()
connectable = engine_from_config(
config.get_section(config.config_ini_section, {}),
prefix="sqlalchemy.",
@@ -0,0 +1,37 @@
"""add users table
Revision ID: 20260403_0004
Revises: 20260403_0003
Create Date: 2026-04-03 02:00:00
"""
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
revision = "20260403_0004"
down_revision = "20260403_0003"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"users",
sa.Column("id", sa.Text(), nullable=False),
sa.Column("username", sa.Text(), nullable=False),
sa.Column("email", sa.Text(), nullable=True),
sa.Column("created_at", sa.TIMESTAMP(timezone=True), nullable=False, server_default=sa.text("NOW()")),
sa.Column("updated_at", sa.TIMESTAMP(timezone=True), nullable=False, server_default=sa.text("NOW()")),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("username", name="uq_users_username"),
sa.UniqueConstraint("email", name="uq_users_email"),
)
op.create_index("ix_users_created_at", "users", ["created_at"])
def downgrade() -> None:
op.drop_index("ix_users_created_at", table_name="users")
op.drop_table("users")