Files
MemeStudio/types/index.ts
2026-04-19 14:28:36 +08:00

91 lines
1.7 KiB
TypeScript

export interface Level {
id: string
image1Url: string
image1Description: string | null
image2Url: string
image2Description: string | null
answer: string
punchline: string | null
hint1: string | null
hint2: string | null
hint3: string | null
sortOrder: number
createdAt: Date
updatedAt: Date
}
export interface LevelFormData {
image1Url: string
image1Description?: string
image2Url: string
image2Description?: string
answer: string
punchline?: string
hint1?: string
hint2?: string
hint3?: string
}
export interface ReorderRequest {
orders: { id: string; sortOrder: number }[]
}
export interface User {
id: string
email: string
emailVerified: boolean
name: string | null
image: string | null
createdAt: Date
updatedAt: Date
}
export interface UserFormData {
email: string
password: string
name?: string
}
export interface WxUser {
id: string
openid: string
sessionKey: string | null
nickname: string | null
avatarUrl: string | null
stamina: number
staminaUpdatedAt: Date | null
createdAt: Date
updatedAt: Date
completedLevelCount: number
}
export interface WxUserLevelProgress {
id: string
userId: string
levelId: string
completedAt: Date
timeSpent: number
level?: {
id: string
answer: string
sortOrder: number
}
}
export interface WxUserWithProgress extends WxUser {
levelProgress: WxUserLevelProgress[]
}
export interface WxUserAssignableLevel {
id: string
answer: string
sortOrder: number
completed: boolean
progressId: string | null
completedAt: Date | null
}
export interface WxUserDetailResponse extends WxUser {
assignedLevels: WxUserAssignableLevel[]
}