fix: audit findings — list details, batch integrity, migrations, restore fidelity
ci / docker (push) Successful in 3m17s

This commit is contained in:
2026-09-06 11:16:52 +08:00
parent d21c6629ba
commit 0cc486069e
8 changed files with 245 additions and 42 deletions
+7 -1
View File
@@ -13,8 +13,14 @@ depends_on = None
def upgrade() -> None:
bind = op.get_bind()
dialect = bind.dialect.name
op.add_column("tasks", sa.Column("external_id", sa.String(255), nullable=True))
op.create_unique_constraint("uq_tasks_external_id", "tasks", ["user_id", "external_id"])
if dialect == "sqlite":
with op.batch_alter_table("tasks") as batch_op:
batch_op.create_unique_constraint("uq_tasks_external_id", ["user_id", "external_id"])
else:
op.create_unique_constraint("uq_tasks_external_id", "tasks", ["user_id", "external_id"])
op.add_column("sessions", sa.Column("ip_address", sa.String(64), nullable=True))
op.add_column("sessions", sa.Column("user_agent", sa.String(255), nullable=True))
@@ -3,6 +3,7 @@ Revision ID: 0006
Revises: 0005
"""
import sqlalchemy as sa
from alembic import op
revision = "0006"
@@ -12,12 +13,18 @@ depends_on = None
def upgrade() -> None:
op.drop_index("ix_habit_logs_habit_day", table_name="habit_logs")
bind = op.get_bind()
indexes = {index["name"] for index in sa.inspect(bind).get_indexes("habit_logs")}
if "ix_habit_logs_habit_day" in indexes:
op.drop_index("ix_habit_logs_habit_day", table_name="habit_logs")
def downgrade() -> None:
op.create_index(
"ix_habit_logs_habit_day",
"habit_logs",
["habit_id", "day"],
)
bind = op.get_bind()
indexes = {index["name"] for index in sa.inspect(bind).get_indexes("habit_logs")}
if "ix_habit_logs_habit_day" not in indexes:
op.create_index(
"ix_habit_logs_habit_day",
"habit_logs",
["habit_id", "day"],
)