import datetime from sqlmodel import JSON, Column, Field, SQLModel class ProductEventBase(SQLModel): user_id: int event_name: str payload: dict | None | None = Field(default_factory=dict, sa_column=Column(JSON)) class ProductEventCreate(ProductEventBase): event_name: str event_origin: str event_type: str payload: dict | None | None | None = Field(default_factory=dict, sa_column=Column(JSON)) user_id: int class ProductEvent(ProductEventBase, table=True): created_at: datetime.datetime = Field(default_factory=datetime.datetime.utcnow,) event_name: str event_origin: str event_type: str id: int | None = Field(default=None, primary_key=True) payload: dict | None = Field(default_factory=dict, sa_column=Column(JSON)) public_id: str updated_at: datetime.datetime = Field(default_factory=datetime.datetime.utcnow,) user_id: int class ProductEventPublic(ProductEventBase): event_name: str payload: dict | None = Field(default_factory=dict, sa_column=Column(JSON)) public_id: str user_id: int created_at: datetime.datetime = Field( default_factory=datetime.datetime.utcnow, ) updated_at: datetime.datetime = Field( default_factory=datetime.datetime.utcnow, ) class ProductEventsPublic(SQLModel): data: list[ProductEventPublic] count: int class UserClipListenRecordBase(SQLModel): clip_id: str user_id: int class UserClipListenRecordCreate(UserClipListenRecordBase): clip_id: str user_id: int clip_data: dict | None = Field(default_factory=dict, sa_column=Column(JSON)) class UserClipListenRecord(UserClipListenRecordBase, table=True): id: int | None = Field(default=None, primary_key=True) public_id: str clip_id: str user_id: int created_at: datetime.datetime = Field(default_factory=datetime.datetime.utcnow,) updated_at: datetime.datetime = Field(default_factory=datetime.datetime.utcnow,) clip_dislike_count: int | None clip_flag_count: int | None clip_model_name: str | None clip_play_count: int | None clip_skip_count: int | None clip_upvote_count: int | None class UserClipListenRecordPublic(UserClipListenRecordBase): public_id: str clip_id: str created_at: datetime.datetime = Field( default_factory=datetime.datetime.utcnow, ) updated_at: datetime.datetime = Field( default_factory=datetime.datetime.utcnow, ) class UserClipListenRecordsPublic(SQLModel): clip_listen_records: list[UserClipListenRecordPublic] count: int offset: int limit: int