立项与伦理-初步优化,新增.env
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
"""Add site_id to startup feasibility and ethics.
|
||||
|
||||
Revision ID: 20250218_01
|
||||
Revises: None
|
||||
Create Date: 2025-02-18
|
||||
"""
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy import inspect
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
revision = "20250218_01"
|
||||
down_revision = None
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
bind = op.get_bind()
|
||||
inspector = inspect(bind)
|
||||
|
||||
feasibility_columns = {col["name"] for col in inspector.get_columns("startup_feasibility")}
|
||||
if "site_id" not in feasibility_columns:
|
||||
op.add_column("startup_feasibility", sa.Column("site_id", postgresql.UUID(as_uuid=True), nullable=True))
|
||||
feasibility_fks = {fk["name"] for fk in inspector.get_foreign_keys("startup_feasibility")}
|
||||
if "fk_startup_feasibility_site_id" not in feasibility_fks:
|
||||
op.create_foreign_key(
|
||||
"fk_startup_feasibility_site_id",
|
||||
"startup_feasibility",
|
||||
"sites",
|
||||
["site_id"],
|
||||
["id"],
|
||||
ondelete="RESTRICT",
|
||||
)
|
||||
|
||||
ethics_columns = {col["name"] for col in inspector.get_columns("startup_ethics")}
|
||||
if "site_id" not in ethics_columns:
|
||||
op.add_column("startup_ethics", sa.Column("site_id", postgresql.UUID(as_uuid=True), nullable=True))
|
||||
ethics_fks = {fk["name"] for fk in inspector.get_foreign_keys("startup_ethics")}
|
||||
if "fk_startup_ethics_site_id" not in ethics_fks:
|
||||
op.create_foreign_key(
|
||||
"fk_startup_ethics_site_id",
|
||||
"startup_ethics",
|
||||
"sites",
|
||||
["site_id"],
|
||||
["id"],
|
||||
ondelete="RESTRICT",
|
||||
)
|
||||
|
||||
# Best-effort backfill for demo data where codes include BJ/SH.
|
||||
op.execute(
|
||||
"""
|
||||
UPDATE startup_feasibility
|
||||
SET site_id = (
|
||||
SELECT id FROM sites
|
||||
WHERE name ILIKE '%北京%' OR city ILIKE '%北京%'
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE site_id IS NULL AND project_no ILIKE '%-BJ-%'
|
||||
"""
|
||||
)
|
||||
op.execute(
|
||||
"""
|
||||
UPDATE startup_feasibility
|
||||
SET site_id = (
|
||||
SELECT id FROM sites
|
||||
WHERE name ILIKE '%上海%' OR city ILIKE '%上海%'
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE site_id IS NULL AND project_no ILIKE '%-SH-%'
|
||||
"""
|
||||
)
|
||||
op.execute(
|
||||
"""
|
||||
UPDATE startup_ethics
|
||||
SET site_id = (
|
||||
SELECT id FROM sites
|
||||
WHERE name ILIKE '%北京%' OR city ILIKE '%北京%'
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE site_id IS NULL AND approval_no ILIKE '%-BJ-%'
|
||||
"""
|
||||
)
|
||||
op.execute(
|
||||
"""
|
||||
UPDATE startup_ethics
|
||||
SET site_id = (
|
||||
SELECT id FROM sites
|
||||
WHERE name ILIKE '%上海%' OR city ILIKE '%上海%'
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE site_id IS NULL AND approval_no ILIKE '%-SH-%'
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
bind = op.get_bind()
|
||||
inspector = inspect(bind)
|
||||
|
||||
feasibility_fks = {fk["name"] for fk in inspector.get_foreign_keys("startup_feasibility")}
|
||||
if "fk_startup_feasibility_site_id" in feasibility_fks:
|
||||
op.drop_constraint("fk_startup_feasibility_site_id", "startup_feasibility", type_="foreignkey")
|
||||
feasibility_columns = {col["name"] for col in inspector.get_columns("startup_feasibility")}
|
||||
if "site_id" in feasibility_columns:
|
||||
op.drop_column("startup_feasibility", "site_id")
|
||||
|
||||
ethics_fks = {fk["name"] for fk in inspector.get_foreign_keys("startup_ethics")}
|
||||
if "fk_startup_ethics_site_id" in ethics_fks:
|
||||
op.drop_constraint("fk_startup_ethics_site_id", "startup_ethics", type_="foreignkey")
|
||||
ethics_columns = {col["name"] for col in inspector.get_columns("startup_ethics")}
|
||||
if "site_id" in ethics_columns:
|
||||
op.drop_column("startup_ethics", "site_id")
|
||||
Reference in New Issue
Block a user