from sqlmodel import Field, SQLModel


# Generic message
class Message(SQLModel):
    message: str


# JSON payload containing access token
class Token(SQLModel):
    access_token: str
    token_type: str = "bearer"


# Contents of JWT token
class TokenPayload(SQLModel):
    sub: int | None = None


class NewPassword(SQLModel):
    token: str
    new_password: str


class Setting(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    key: str
    value: str
    describle: str | None = None
    wxapp_id: int | None = None
    update_time: str | None = None


class Wxapp(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    app_id: str
    app_secret: str
    mchid: str | None = None
    api_key: str | None = None
    private_key: str | None = None
    cert_pem: str | None = None
    key_pem: str | None = None
    link_name: str | None = None
    link_phone: str | None = None
    end_time: str | None = None
    is_local: int | None = None
    plus_id: int | None = None
    update_time: str | None = None


class AppsMode(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    title: str
    image_id: int | None = None
    name: str | None = None
    param: str | None = None
    is_delete: int | None = None
    state: int | None = None
    create_time: str | None = None
    update_time: str | None = None
    wxapp_id: int | None = None
    command: str | None = None
    tips_txt: str | None = None
    sort: int | None = None
    is_default: int | None = None
    remarks: str | None = None


class AppsLoop(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    keys: str
    fail_num: int | None = None
    success_num: int | None = None


class MjJobs(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    user_id: int


class Platform(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str
    type: int | None = None
    sort: int | None = None


# class Seller(SQLModel, table=True):
#     id: str
#     open_id: str
#     password: str
#     nick_name: str | None = None
#     avatar_url: str | None = None
#     gender: int | None = None
#     country: str | None = None
#     city: str | None = None
#     address_id: int | None = None
#     balance: float | None = None
#     points: int | None = None
#     total_money: float | None = None
#     withdraw_money: float | None = None
#     pay_money: float | None = None
#     expand_money: float | None = None
#     gradle_id: int | None = None
#     second: int | None = None
#     card_type: int | None = None
#     pople: int | None = None
#     end_time: str | None = None


class Question(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    user_id: int
    session_id: str | None = Field(default=None, description="chatgpt会话ID")
    id: int | None = Field(
        default=None, primary_key=True, description="The unique identifier"
    )
    name: str | None = Field(description="The name of the item")
    description: str | None = Field(description="The description of the item")