Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from decimal import Decimal
|
||||
from typing import Annotated, Any
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, HttpUrl
|
||||
|
||||
from app.models import Currency, PaymentStatus
|
||||
|
||||
Amount = Annotated[Decimal, Field(gt=0, max_digits=18, decimal_places=2)]
|
||||
|
||||
|
||||
class PaymentCreate(BaseModel):
|
||||
amount: Amount
|
||||
currency: Currency
|
||||
description: str = Field(min_length=1, max_length=500)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
webhook_url: HttpUrl
|
||||
|
||||
|
||||
class PaymentAccepted(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
payment_id: uuid.UUID = Field(validation_alias="id")
|
||||
status: PaymentStatus
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class PaymentDetails(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
payment_id: uuid.UUID = Field(validation_alias="id")
|
||||
amount: Decimal
|
||||
currency: Currency
|
||||
description: str
|
||||
metadata: dict[str, Any] = Field(validation_alias="metadata_")
|
||||
status: PaymentStatus
|
||||
idempotency_key: str
|
||||
webhook_url: str
|
||||
created_at: datetime
|
||||
processed_at: datetime | None
|
||||
|
||||
|
||||
class PaymentCreatedEvent(BaseModel):
|
||||
payment_id: uuid.UUID
|
||||
|
||||
|
||||
class PaymentWebhook(BaseModel):
|
||||
payment_id: uuid.UUID
|
||||
amount: Decimal
|
||||
currency: Currency
|
||||
status: PaymentStatus
|
||||
processed_at: datetime
|
||||
metadata: dict[str, Any]
|
||||
Reference in New Issue
Block a user