satupeta-main/shared/types/mapset.ts
2026-02-23 12:21:05 +07:00

111 lines
2.3 KiB
TypeScript
Executable File

/* eslint-disable @typescript-eslint/no-explicit-any */
import { Category } from "./category";
import { MapSource } from "./map-source";
export interface Classification {
id: string;
name: string;
is_open: boolean;
is_limited: boolean;
is_secret: boolean;
}
export interface ProjectionSystem {
id: string;
name: string;
}
export interface Producer {
id: string;
name: string;
description: string;
thumbnail: string;
address: string;
phone_number: string;
email: string;
website: string;
}
export interface Regional {
id: string;
code: string;
name: string;
description: any;
thumbnail: any;
is_active: boolean;
}
export interface Credential {
id: string;
name: string;
description: string;
credential_type: string;
credential_metadata: CredentialMetadata;
is_default: boolean;
is_active: boolean;
created_by: string;
updated_by: string;
created_at: string;
updated_at: string;
last_used_at: any;
last_used_by: any;
}
export interface CredentialMetadata {
environment: string;
version: string;
}
export type Mapset = {
id: string;
name: string;
description: string;
scale: string;
layer_url: string;
layer_type: "line" | "polygon" | "point" | null;
metadata_url: string;
status_validation: string;
classification: Classification;
data_status: "sementara" | "tetap";
data_update_period: string;
data_version: string;
download_count: number;
coverage_level: string;
coverage_area: string;
category: Category;
projection_system: ProjectionSystem;
producer: Producer;
regional: Regional;
sources: MapSource[];
is_popular: boolean;
is_active: boolean;
created_at: string;
updated_at: string;
view_count: number;
};
export interface MapsetSubmitPayload {
name: string;
description: string;
scale: string;
data_status: string;
data_update_period: string;
data_version: string;
category_id: string;
projection_system_id: string;
producer_id: string;
source_id?: string | string[] | null;
is_popular: boolean;
is_active: boolean;
layer_url: string;
layer_type: "line" | "polygon" | "point" | null;
metadata_url: string;
regional_id: string;
classification_id: string;
status_validation: string;
notes?: string;
coverage_level: string;
coverage_area: string;
}