45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
"""add asset image lifecycle fields
|
|
|
|
Revision ID: a41e8c7f4b20
|
|
Revises: 658b0503f71c
|
|
Create Date: 2026-08-30 09:00:00
|
|
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
revision = "a41e8c7f4b20"
|
|
down_revision = "658b0503f71c"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column("product_assets", sa.Column("original_url", sa.Text(), nullable=True))
|
|
op.add_column("product_assets", sa.Column("original_storage_key", sa.String(length=1024), nullable=True))
|
|
op.add_column("product_assets", sa.Column("current_storage_key", sa.String(length=1024), nullable=True))
|
|
op.add_column("product_assets", sa.Column("watermark_enabled", sa.Boolean(), nullable=False, server_default=sa.false()))
|
|
op.add_column("product_assets", sa.Column("watermark_config", sa.JSON(), nullable=True))
|
|
|
|
# 兼容旧数据:采集图优先以已转存文件为原图;生成图若此前已保存 source_url,则它是无水印原图。
|
|
op.execute(
|
|
"""
|
|
UPDATE product_assets
|
|
SET original_url = CASE
|
|
WHEN group_key = 'generated' AND source_url IS NOT NULL AND source_url <> '' THEN source_url
|
|
ELSE COALESCE(stored_url, source_url)
|
|
END
|
|
"""
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("product_assets", "watermark_config")
|
|
op.drop_column("product_assets", "watermark_enabled")
|
|
op.drop_column("product_assets", "current_storage_key")
|
|
op.drop_column("product_assets", "original_storage_key")
|
|
op.drop_column("product_assets", "original_url")
|