fix remuve users
This commit is contained in:
@@ -11,7 +11,7 @@ class Response(Base):
|
|||||||
|
|
||||||
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
||||||
poll_id = Column(UUID(as_uuid=True), ForeignKey("polls.id", ondelete="CASCADE"), nullable=False)
|
poll_id = Column(UUID(as_uuid=True), ForeignKey("polls.id", ondelete="CASCADE"), nullable=False)
|
||||||
user_id = Column(UUID(as_uuid=True), nullable=True)
|
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=True)
|
||||||
# Снимок группы и организации пользователя на момент прохождения
|
# Снимок группы и организации пользователя на момент прохождения
|
||||||
group_id = Column(UUID(as_uuid=True), nullable=True)
|
group_id = Column(UUID(as_uuid=True), nullable=True)
|
||||||
organization_id = Column(UUID(as_uuid=True), nullable=True)
|
organization_id = Column(UUID(as_uuid=True), nullable=True)
|
||||||
|
|||||||
@@ -70,6 +70,30 @@ async def create_tables():
|
|||||||
raise HTTPException(status_code=500, detail=str(e))
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/db/migrate-cascade-user", dependencies=[Depends(require_admin_key)])
|
||||||
|
async def migrate_cascade_user():
|
||||||
|
"""Добавляет FK responses.user_id → users.id ON DELETE CASCADE, если ещё не существует."""
|
||||||
|
engine = make_engine()
|
||||||
|
try:
|
||||||
|
with engine.connect() as conn:
|
||||||
|
conn.execute(text("""
|
||||||
|
DO $$ BEGIN
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT 1 FROM pg_constraint
|
||||||
|
WHERE conname = 'responses_user_id_fkey'
|
||||||
|
) THEN
|
||||||
|
ALTER TABLE responses
|
||||||
|
ADD CONSTRAINT responses_user_id_fkey
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
|
||||||
|
END IF;
|
||||||
|
END $$;
|
||||||
|
"""))
|
||||||
|
conn.commit()
|
||||||
|
return {"status": "ok", "detail": "FK responses.user_id → users(id) ON DELETE CASCADE ensured"}
|
||||||
|
except SQLAlchemyError as e:
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
@router.post("/db/migrate-users", dependencies=[Depends(require_admin_key)])
|
@router.post("/db/migrate-users", dependencies=[Depends(require_admin_key)])
|
||||||
async def migrate_users():
|
async def migrate_users():
|
||||||
"""Добавляет колонки username и hashed_password в таблицу users, если они ещё не существуют."""
|
"""Добавляет колонки username и hashed_password в таблицу users, если они ещё не существуют."""
|
||||||
|
|||||||
Reference in New Issue
Block a user