蜜恋后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

36 lines
1.1 KiB

"""Apply and verify the API 0.6.7 post columns before deployment."""
from sqlalchemy import inspect, text
from .database import engine
POST_COLUMNS = {
"content_format": "VARCHAR(10) NOT NULL DEFAULT 'plain'",
"feeling": "VARCHAR(50) NULL",
"location_name": "VARCHAR(255) NULL",
"location_latitude": "DOUBLE NULL",
"location_longitude": "DOUBLE NULL",
}
def main() -> None:
if engine.dialect.name != "mysql":
raise RuntimeError("Post migration requires MySQL")
existing = {column["name"] for column in inspect(engine).get_columns("posts")}
with engine.begin() as connection:
for name, definition in POST_COLUMNS.items():
if name not in existing:
connection.execute(text(f"ALTER TABLE posts ADD COLUMN {name} {definition}"))
connection.execute(text("SELECT 1"))
actual = {column["name"] for column in inspect(engine).get_columns("posts")}
missing = POST_COLUMNS.keys() - actual
if missing:
raise RuntimeError(f"Post migration incomplete: {sorted(missing)}")
print("POST_COMPOSER_MIGRATION_OK")
if __name__ == "__main__":
main()