concurrency-fix #15

Merged
jonas merged 24 commits from concurrency-fix into main 2025-12-01 13:34:35 +00:00
2 changed files with 7 additions and 5 deletions
Showing only changes of commit 556eef529a - Show all commits

View File

@@ -10,6 +10,8 @@ from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
from alpine_bits_python.const import WebhookStatus
# revision identifiers, used by Alembic.
revision: str = 'e7ee03d8f430'
@@ -66,13 +68,12 @@ def upgrade() -> None:
sa.Column('payload_hash', sa.String(length=64), nullable=False),
sa.Column('webhook_endpoint_id', sa.Integer(), nullable=True),
sa.Column('hotel_id', sa.String(length=50), nullable=True),
sa.Column('status', sa.String(length=20), nullable=False, default='pending'),
sa.Column('status', sa.String(length=20), nullable=False, default=WebhookStatus.PENDING.value),
sa.Column('processing_started_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('processing_completed_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('retry_count', sa.Integer(), nullable=True, default=0),
sa.Column('last_error', sa.String(length=2000), nullable=True),
sa.Column('payload_json', sa.JSON(), nullable=True),
sa.Column('payload_size_bytes', sa.Integer(), nullable=True),
sa.Column('purged_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
sa.Column('source_ip', sa.String(length=45), nullable=True),

View File

@@ -4,6 +4,8 @@ import os
from collections.abc import AsyncGenerator, Callable
from typing import TypeVar
from .const import WebhookStatus
from sqlalchemy import (
JSON,
Boolean,
@@ -751,8 +753,8 @@ class WebhookRequest(Base):
hotel_id = Column(String(50), ForeignKey("hotels.hotel_id"), nullable=True, index=True)
# Processing tracking
status = Column(String(20), nullable=False, default='pending', index=True)
# Status values: 'pending', 'processing', 'completed', 'failed'
status = Column(String(20), nullable=False, default=WebhookStatus.PENDING.value, index=True)
# Status values: 'pending', 'processing', 'completed', 'failed' set by Enum WebhookStatus
processing_started_at = Column(DateTime(timezone=True), nullable=True)
processing_completed_at = Column(DateTime(timezone=True), nullable=True)
@@ -763,7 +765,6 @@ class WebhookRequest(Base):
# Payload storage
payload_json = Column(JSON, nullable=True) # NULL after purge, kept for retries
payload_size_bytes = Column(Integer, nullable=True) # Track original size
purged_at = Column(DateTime(timezone=True), nullable=True) # When JSON was purged
# Metadata