95 lines
2.1 KiB
TypeScript
95 lines
2.1 KiB
TypeScript
import type { Cloud, CloudType, Profile } from '@/types/database'
|
|
|
|
export interface BackendUserProfile {
|
|
id: string
|
|
name: string
|
|
email: string
|
|
image: string | null
|
|
cloud_count: number
|
|
received_like_count: number
|
|
last_online: string | null
|
|
role: Profile['role']
|
|
is_disabled: boolean
|
|
created_at: string
|
|
}
|
|
|
|
export interface BackendCloudType {
|
|
id: number
|
|
name: string
|
|
genus: string | null
|
|
icon_id: string | null
|
|
rarity: number
|
|
description: string | null
|
|
created_at: string
|
|
}
|
|
|
|
export interface BackendCloudOwner {
|
|
id: string
|
|
name: string
|
|
}
|
|
|
|
export interface BackendCloudInfo {
|
|
id: string
|
|
owner: BackendCloudOwner
|
|
type: BackendCloudType
|
|
latitude: number
|
|
longitude: number
|
|
description: string | null
|
|
captured_at: string | null
|
|
uploaded_at: string
|
|
updated_at: string
|
|
received_like_count: number
|
|
status: Cloud['status']
|
|
is_hidden: boolean
|
|
}
|
|
|
|
export interface ActionResponse {
|
|
status_code: number
|
|
message: string
|
|
}
|
|
|
|
export interface CloudCreateResponse extends ActionResponse {
|
|
cloud_id: string
|
|
}
|
|
|
|
export interface CloudTypeCreateResponse extends ActionResponse {
|
|
cloud_type_id: number
|
|
}
|
|
|
|
// Internal view model. The backend profile is normalized here so existing
|
|
// layout/admin consumers do not need to understand the wire representation.
|
|
export interface AuthUser {
|
|
id: string
|
|
email: string
|
|
username: string
|
|
image: string | null
|
|
role: Profile['role']
|
|
is_disabled: boolean
|
|
cloud_count: number
|
|
received_like_count: number
|
|
created_at: string
|
|
}
|
|
|
|
export interface ApiCloudTypeSummary {
|
|
id: number
|
|
name: string
|
|
rarity: CloudType['rarity']
|
|
rarity_value: number
|
|
}
|
|
|
|
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
|
|
cloud_type_rarity_value: number | null
|
|
username: string | null
|
|
received_like_count: number
|
|
}
|