feat: add Letzshop historical import migrations

- Add LetzshopHistoricalImportJob table for progress tracking
- Add order_date column to track when orders were placed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-19 21:18:31 +01:00
parent e36d8db7ca
commit 473a4fabfc
2 changed files with 84 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
"""add_letzshop_historical_import_jobs_table
Revision ID: 204273a59d73
Revises: cb88bc9b5f86
Create Date: 2025-12-19 05:40:53.463341
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import sqlite
# revision identifiers, used by Alembic.
revision: str = '204273a59d73'
down_revision: Union[str, None] = 'cb88bc9b5f86'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
op.create_table('letzshop_historical_import_jobs',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('vendor_id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('status', sa.String(length=50), nullable=False),
sa.Column('current_phase', sa.String(length=20), nullable=True),
sa.Column('current_page', sa.Integer(), nullable=True),
sa.Column('total_pages', sa.Integer(), nullable=True),
sa.Column('shipments_fetched', sa.Integer(), nullable=True),
sa.Column('orders_processed', sa.Integer(), nullable=True),
sa.Column('orders_imported', sa.Integer(), nullable=True),
sa.Column('orders_updated', sa.Integer(), nullable=True),
sa.Column('orders_skipped', sa.Integer(), nullable=True),
sa.Column('products_matched', sa.Integer(), nullable=True),
sa.Column('products_not_found', sa.Integer(), nullable=True),
sa.Column('confirmed_stats', sqlite.JSON(), nullable=True),
sa.Column('declined_stats', sqlite.JSON(), nullable=True),
sa.Column('error_message', sa.Text(), nullable=True),
sa.Column('started_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('completed_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=False),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.ForeignKeyConstraint(['vendor_id'], ['vendors.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_index('idx_historical_import_vendor', 'letzshop_historical_import_jobs', ['vendor_id', 'status'], unique=False)
op.create_index(op.f('ix_letzshop_historical_import_jobs_id'), 'letzshop_historical_import_jobs', ['id'], unique=False)
op.create_index(op.f('ix_letzshop_historical_import_jobs_vendor_id'), 'letzshop_historical_import_jobs', ['vendor_id'], unique=False)
def downgrade() -> None:
op.drop_index(op.f('ix_letzshop_historical_import_jobs_vendor_id'), table_name='letzshop_historical_import_jobs')
op.drop_index(op.f('ix_letzshop_historical_import_jobs_id'), table_name='letzshop_historical_import_jobs')
op.drop_index('idx_historical_import_vendor', table_name='letzshop_historical_import_jobs')
op.drop_table('letzshop_historical_import_jobs')

View File

@@ -0,0 +1,27 @@
"""add_order_date_to_letzshop_orders
Revision ID: 2362c2723a93
Revises: 204273a59d73
Create Date: 2025-12-19 08:46:23.731912
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '2362c2723a93'
down_revision: Union[str, None] = '204273a59d73'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# Add order_date column to letzshop_orders table
op.add_column('letzshop_orders', sa.Column('order_date', sa.DateTime(timezone=True), nullable=True))
def downgrade() -> None:
op.drop_column('letzshop_orders', 'order_date')