上传素材管控-历史素材success
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
"""add upload resource physical delete status
|
||||
|
||||
Revision ID: 1475d11b1d74
|
||||
Revises: cd7688999204
|
||||
Create Date: 2026-07-08 15:14:13.995718
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '1475d11b1d74'
|
||||
down_revision: Union[str, None] = 'cd7688999204'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('upload_resources',
|
||||
sa.Column('id', sa.String(length=32), nullable=False),
|
||||
sa.Column('user_id', sa.String(length=32), nullable=False),
|
||||
sa.Column('module', sa.String(length=64), nullable=False),
|
||||
sa.Column('resource_type', sa.String(length=32), nullable=False),
|
||||
sa.Column('resource_url', sa.Text(), nullable=False),
|
||||
sa.Column('storage_path', sa.Text(), nullable=False),
|
||||
sa.Column('file_name', sa.String(length=255), nullable=True),
|
||||
sa.Column('file_ext', sa.String(length=32), nullable=True),
|
||||
sa.Column('mime_type', sa.String(length=128), nullable=True),
|
||||
sa.Column('file_size_bytes', sa.BigInteger(), server_default='0', nullable=False),
|
||||
sa.Column('duration_seconds', sa.Float(), nullable=True),
|
||||
sa.Column('duration_source', sa.String(length=32), nullable=True),
|
||||
sa.Column('width', sa.BigInteger(), nullable=True),
|
||||
sa.Column('height', sa.BigInteger(), nullable=True),
|
||||
sa.Column('source_model', sa.String(length=64), nullable=True),
|
||||
sa.Column('source_id', sa.String(length=32), nullable=True),
|
||||
sa.Column('source_module', sa.String(length=64), nullable=True),
|
||||
sa.Column('bind_status', sa.String(length=32), server_default='pending', nullable=False),
|
||||
sa.Column('delete_policy', sa.String(length=32), server_default='user_deletable', nullable=False),
|
||||
sa.Column('created_by', sa.String(length=32), server_default='api', nullable=False),
|
||||
sa.Column('metadata_json', sa.Text(), nullable=True),
|
||||
sa.Column('capacity_released_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('physical_deleted_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('file_delete_status', sa.String(length=32), server_default='active', nullable=False),
|
||||
sa.Column('file_delete_error', sa.Text(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('storage_path', name='uq_upload_resources_storage_path')
|
||||
)
|
||||
op.create_index(op.f('ix_upload_resources_bind_status'), 'upload_resources', ['bind_status'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_capacity_released_at'), 'upload_resources', ['capacity_released_at'], unique=False)
|
||||
op.create_index('ix_upload_resources_created', 'upload_resources', ['created_at'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_created_by'), 'upload_resources', ['created_by'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_delete_policy'), 'upload_resources', ['delete_policy'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_deleted_at'), 'upload_resources', ['deleted_at'], unique=False)
|
||||
op.create_index('ix_upload_resources_file_delete_status', 'upload_resources', ['file_delete_status'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_module'), 'upload_resources', ['module'], unique=False)
|
||||
op.create_index('ix_upload_resources_physical_deleted', 'upload_resources', ['physical_deleted_at'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_resource_type'), 'upload_resources', ['resource_type'], unique=False)
|
||||
op.create_index('ix_upload_resources_source', 'upload_resources', ['source_model', 'source_id', 'deleted_at'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_source_id'), 'upload_resources', ['source_id'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_source_model'), 'upload_resources', ['source_model'], unique=False)
|
||||
op.create_index('ix_upload_resources_url', 'upload_resources', ['resource_url'], unique=False)
|
||||
op.create_index('ix_upload_resources_user_bind', 'upload_resources', ['user_id', 'bind_status', 'deleted_at'], unique=False)
|
||||
op.create_index(op.f('ix_upload_resources_user_id'), 'upload_resources', ['user_id'], unique=False)
|
||||
op.create_index('ix_upload_resources_user_module_type', 'upload_resources', ['user_id', 'module', 'resource_type', 'deleted_at'], unique=False)
|
||||
op.create_index(
|
||||
'ix_upload_resources_history_lookup',
|
||||
'upload_resources',
|
||||
['user_id', 'resource_type', sa.text('created_at DESC')],
|
||||
unique=False,
|
||||
postgresql_where=sa.text(
|
||||
"deleted_at IS NULL "
|
||||
"AND bind_status = 'pending' "
|
||||
"AND delete_policy = 'user_deletable' "
|
||||
"AND source_model IS NULL "
|
||||
"AND source_id IS NULL"
|
||||
),
|
||||
)
|
||||
op.add_column('user_resource_month_stats', sa.Column('upload_size_bytes', sa.BigInteger(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_month_stats', sa.Column('audio_size_bytes', sa.BigInteger(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_month_stats', sa.Column('shot_segment_size_bytes', sa.BigInteger(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_month_stats', sa.Column('upload_count', sa.Integer(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_month_stats', sa.Column('audio_count', sa.Integer(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_month_stats', sa.Column('shot_segment_count', sa.Integer(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_total_stats', sa.Column('upload_size_bytes', sa.BigInteger(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_total_stats', sa.Column('audio_size_bytes', sa.BigInteger(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_total_stats', sa.Column('shot_segment_size_bytes', sa.BigInteger(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_total_stats', sa.Column('upload_count', sa.Integer(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_total_stats', sa.Column('audio_count', sa.Integer(), server_default='0', nullable=False))
|
||||
op.add_column('user_resource_total_stats', sa.Column('shot_segment_count', sa.Integer(), server_default='0', nullable=False))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('user_resource_total_stats', 'shot_segment_count')
|
||||
op.drop_column('user_resource_total_stats', 'audio_count')
|
||||
op.drop_column('user_resource_total_stats', 'upload_count')
|
||||
op.drop_column('user_resource_total_stats', 'shot_segment_size_bytes')
|
||||
op.drop_column('user_resource_total_stats', 'audio_size_bytes')
|
||||
op.drop_column('user_resource_total_stats', 'upload_size_bytes')
|
||||
op.drop_column('user_resource_month_stats', 'shot_segment_count')
|
||||
op.drop_column('user_resource_month_stats', 'audio_count')
|
||||
op.drop_column('user_resource_month_stats', 'upload_count')
|
||||
op.drop_column('user_resource_month_stats', 'shot_segment_size_bytes')
|
||||
op.drop_column('user_resource_month_stats', 'audio_size_bytes')
|
||||
op.drop_column('user_resource_month_stats', 'upload_size_bytes')
|
||||
op.drop_index('ix_upload_resources_history_lookup', table_name='upload_resources')
|
||||
op.drop_index('ix_upload_resources_user_module_type', table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_user_id'), table_name='upload_resources')
|
||||
op.drop_index('ix_upload_resources_user_bind', table_name='upload_resources')
|
||||
op.drop_index('ix_upload_resources_url', table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_source_model'), table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_source_id'), table_name='upload_resources')
|
||||
op.drop_index('ix_upload_resources_source', table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_resource_type'), table_name='upload_resources')
|
||||
op.drop_index('ix_upload_resources_physical_deleted', table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_module'), table_name='upload_resources')
|
||||
op.drop_index('ix_upload_resources_file_delete_status', table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_deleted_at'), table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_delete_policy'), table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_created_by'), table_name='upload_resources')
|
||||
op.drop_index('ix_upload_resources_created', table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_capacity_released_at'), table_name='upload_resources')
|
||||
op.drop_index(op.f('ix_upload_resources_bind_status'), table_name='upload_resources')
|
||||
op.drop_table('upload_resources')
|
||||
# ### end Alembic commands ###
|
||||
Reference in New Issue
Block a user