from typing import List
from pydantic import BaseModel, Field
from typing import Optional
from decimal import Decimal
from datetime import datetime
from src.apps.base.schemas.common import BaseSchema
from src.utils.constants import MAX_PER_PAGE,DEFAULT_PER_PAGE

class JobLogSchema(BaseSchema):
    code: Optional[str] = None
    name: Optional[str] = None
    url: Optional[str] = None
    status: Optional[str] = None
    total_records: Optional[int] = 0
    total_prices: Optional[Decimal] = 0
    date_start: Optional[datetime] = None
    date_end: Optional[datetime] = None
    message: Optional[str] = None
    total_validation: Optional[int] = 0
    validation_passed: Optional[int] = 0
    validation_warn: Optional[int] = 0
    validation_failed: Optional[int] = 0
    validation_status: Optional[str] = None
    validation_message: Optional[str] = None
    job_date: Optional[datetime] = None
    
class JobLogCreateSchema(JobLogSchema):
    literal: Optional[str] = None
    
class JobLogUpdateSchema(JobLogSchema):
    pass
    
class JobLogOutputSchema(JobLogSchema):
    id: Optional[int] = None
    literal: Optional[str] = None
    date_created: Optional[datetime] = None
    last_updated: Optional[datetime] = None
    
class JobLogFilterSchema(BaseModel):
    status: Optional[str] = None
    search: Optional[str] = None