94 lines
1.7 KiB
TypeScript
94 lines
1.7 KiB
TypeScript
import type { Cloud, CloudType, Profile, UserCollection } from '@/types/database'
|
|
|
|
export interface AuthUser {
|
|
id: string
|
|
email: string
|
|
email_verified: boolean
|
|
created_at: string
|
|
}
|
|
|
|
export interface AuthResponse {
|
|
access_token: string
|
|
token_type: 'bearer'
|
|
expires_in: number
|
|
user: AuthUser
|
|
profile: Profile
|
|
}
|
|
|
|
export interface MeResponse {
|
|
user: AuthUser
|
|
profile: Profile
|
|
}
|
|
|
|
export interface PublicProfile {
|
|
id: string
|
|
username: string
|
|
avatar_url: string | null
|
|
created_at: string
|
|
}
|
|
|
|
export interface ApiPage<T> {
|
|
items: T[]
|
|
page: number
|
|
page_size: number
|
|
total: number
|
|
total_pages: number
|
|
}
|
|
|
|
export interface ApiCloudTypeSummary {
|
|
id: number
|
|
name: string
|
|
name_en: string
|
|
rarity: CloudType['rarity']
|
|
}
|
|
|
|
export interface ApiCloudOwner {
|
|
id: string
|
|
username: string
|
|
}
|
|
|
|
export interface ApiCloud extends Cloud {
|
|
updated_at: string
|
|
cloud_type: ApiCloudTypeSummary | null
|
|
owner: ApiCloudOwner | null
|
|
cloud_type_name: string | null
|
|
cloud_type_rarity: CloudType['rarity'] | null
|
|
username: string | null
|
|
}
|
|
|
|
export interface ApiCollection extends UserCollection {
|
|
cloud_type: ApiCloudTypeSummary
|
|
first_cloud: Pick<
|
|
ApiCloud,
|
|
'id' | 'image_url' | 'thumbnail_url' | 'captured_at' | 'created_at' | 'location_name'
|
|
> | null
|
|
}
|
|
|
|
export interface UnlockedBadge {
|
|
cloud_type_id: number
|
|
cloud_name: string
|
|
cloud_name_en: string
|
|
rarity: CloudType['rarity']
|
|
unlocked_at: string
|
|
}
|
|
|
|
export interface CloudCreateResponse {
|
|
cloud: ApiCloud
|
|
unlocked_badge: UnlockedBadge | null
|
|
}
|
|
|
|
export interface AdminStats {
|
|
users: number
|
|
images: number
|
|
today_uploads: number
|
|
pending: number
|
|
approved: number
|
|
rejected: number
|
|
hidden: number
|
|
}
|
|
|
|
export interface AdminUserItem {
|
|
user: AuthUser
|
|
profile: Profile
|
|
}
|