from pydantic import BaseModel
from typing import Optional


# 数据模型基类: ImsCoreCacheBase,用于描述基础字段的类型、用途和注意点
class ImsCoreCacheBase(BaseModel):
    acid: str  # 对应数据库表中主键acid


class ImsCoreCacheCreate(ImsCoreCacheBase):
    """
    用于创建新的ims_core_cache记录:
    - 继承自ImsCoreCacheBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreCacheUpdate(BaseModel):
    """
    用于更新已有ims_core_cache记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[str]


class ImsCoreCache(ImsCoreCacheBase):
    """
    表示完整的ims_core_cache记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCoreCronBase,用于描述基础字段的类型、用途和注意点
class ImsCoreCronBase(BaseModel):
    acid: int
    createtime: Optional[int]
    nextruntime: Optional[int]
    uniacid: Optional[int]
    cloudid: Optional[int]


class ImsCoreCronCreate(ImsCoreCronBase):
    """
    用于创建新的ims_core_cron记录:
    - 继承自ImsCoreCronBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreCronUpdate(BaseModel):
    """
    用于更新已有ims_core_cron记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]
    createtime: Optional[int]
    nextruntime: Optional[int]
    uniacid: Optional[int]
    cloudid: Optional[int]


class ImsCoreCron(ImsCoreCronBase):
    """
    表示完整的ims_core_cron记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCoreCronRecordBase,用于描述基础字段的类型、用途和注意点
class ImsCoreCronRecordBase(BaseModel):
    acid: int
    uniacid: Optional[int]
    tid: Optional[int]
    module: Optional[str]


class ImsCoreCronRecordCreate(ImsCoreCronRecordBase):
    """
    用于创建新的ims_core_cron_record记录:
    - 继承自ImsCoreCronRecordBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreCronRecordUpdate(BaseModel):
    """
    用于更新已有ims_core_cron_record记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]
    uniacid: Optional[int]
    tid: Optional[int]
    module: Optional[str]


class ImsCoreCronRecord(ImsCoreCronRecordBase):
    """
    表示完整的ims_core_cron_record记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCoreJobBase,用于描述基础字段的类型、用途和注意点
class ImsCoreJobBase(BaseModel):
    acid: int


class ImsCoreJobCreate(ImsCoreJobBase):
    """
    用于创建新的ims_core_job记录:
    - 继承自ImsCoreJobBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreJobUpdate(BaseModel):
    """
    用于更新已有ims_core_job记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]


class ImsCoreJob(ImsCoreJobBase):
    """
    表示完整的ims_core_job记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCoreMenuBase,用于描述基础字段的类型、用途和注意点
class ImsCoreMenuBase(BaseModel):
    acid: int


class ImsCoreMenuCreate(ImsCoreMenuBase):
    """
    用于创建新的ims_core_menu记录:
    - 继承自ImsCoreMenuBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreMenuUpdate(BaseModel):
    """
    用于更新已有ims_core_menu记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]


class ImsCoreMenu(ImsCoreMenuBase):
    """
    表示完整的ims_core_menu记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCoreMenuShortcutBase,用于描述基础字段的类型、用途和注意点
class ImsCoreMenuShortcutBase(BaseModel):
    acid: int
    uid: Optional[int]


class ImsCoreMenuShortcutCreate(ImsCoreMenuShortcutBase):
    """
    用于创建新的ims_core_menu_shortcut记录:
    - 继承自ImsCoreMenuShortcutBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreMenuShortcutUpdate(BaseModel):
    """
    用于更新已有ims_core_menu_shortcut记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]
    uid: Optional[int]


class ImsCoreMenuShortcut(ImsCoreMenuShortcutBase):
    """
    表示完整的ims_core_menu_shortcut记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCorePaylogBase,用于描述基础字段的类型、用途和注意点
class ImsCorePaylogBase(BaseModel):
    acid: int
    openid: Optional[str]
    tid: Optional[int]
    uniacid: Optional[int]
    uniontid: Optional[str]


class ImsCorePaylogCreate(ImsCorePaylogBase):
    """
    用于创建新的ims_core_paylog记录:
    - 继承自ImsCorePaylogBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCorePaylogUpdate(BaseModel):
    """
    用于更新已有ims_core_paylog记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]
    openid: Optional[str]
    tid: Optional[int]
    uniacid: Optional[int]
    uniontid: Optional[str]


class ImsCorePaylog(ImsCorePaylogBase):
    """
    表示完整的ims_core_paylog记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCorePerformanceBase,用于描述基础字段的类型、用途和注意点
class ImsCorePerformanceBase(BaseModel):
    acid: int


class ImsCorePerformanceCreate(ImsCorePerformanceBase):
    """
    用于创建新的ims_core_performance记录:
    - 继承自ImsCorePerformanceBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCorePerformanceUpdate(BaseModel):
    """
    用于更新已有ims_core_performance记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]


class ImsCorePerformance(ImsCorePerformanceBase):
    """
    表示完整的ims_core_performance记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCoreQueueBase,用于描述基础字段的类型、用途和注意点
class ImsCoreQueueBase(BaseModel):
    acid: int
    uniacid: Optional[int]
    module: Optional[str]
    dateline: Optional[int]


class ImsCoreQueueCreate(ImsCoreQueueBase):
    """
    用于创建新的ims_core_queue记录:
    - 继承自ImsCoreQueueBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreQueueUpdate(BaseModel):
    """
    用于更新已有ims_core_queue记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]
    uniacid: Optional[int]
    module: Optional[str]
    dateline: Optional[int]


class ImsCoreQueue(ImsCoreQueueBase):
    """
    表示完整的ims_core_queue记录:
    - acid: 数据库主键ID
    - 包含所有字段的最终模型,ORM转换时使用
    """

    class Config:
        orm_mode = True


# 数据模型基类: ImsCoreRefundlogBase,用于描述基础字段的类型、用途和注意点
class ImsCoreRefundlogBase(BaseModel):
    acid: int
    refund_uniontid: Optional[str]
    uniontid: Optional[str]


class ImsCoreRefundlogCreate(ImsCoreRefundlogBase):
    """
    用于创建新的ims_core_refundlog记录:
    - 继承自ImsCoreRefundlogBase,不额外添加字段
    - 仅表示此Schema专用于'创建'场景
    """
    pass


class ImsCoreRefundlogUpdate(BaseModel):
    """
    用于更新已有ims_core_refundlog记录:
    - 只包含可选字段,未在此处的内容将保持不变
    - 注意: exclude_unset=True 可以避免更新空值
    """
    acid: Optional[int]
    refund_uniontid: Optional[str]
    uniontid: Optional[str]