Files
ozon-seller-kit/server/migrations/versions/a41e8c7f4b20_add_asset_image_lifecycle.py
T

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")