90 lines
1.7 KiB
TypeScript
90 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
|
|
sortKey: string
|
|
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
|
|
/** 1-based 位置;创建时 [1, N+1],编辑时 [1, N];不传由后端决定默认行为 */
|
|
position?: 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[]
|
|
}
|