81 lines
1.8 KiB
TypeScript
81 lines
1.8 KiB
TypeScript
import type { EmissionParams, Pollutant } from '@airpredict/shared';
|
|
import { http } from './http';
|
|
|
|
export interface Material {
|
|
id: string;
|
|
name: string;
|
|
category: string;
|
|
brand?: string;
|
|
manufacturer?: string;
|
|
spec?: string;
|
|
envGrade?: string;
|
|
healthGrade?: string;
|
|
usageUnit: string;
|
|
sortOrder: number;
|
|
emissionParams: Record<Pollutant, EmissionParams>;
|
|
isPublic: boolean;
|
|
ownerOrgId?: string;
|
|
updatedAt: string;
|
|
favorited: boolean;
|
|
}
|
|
|
|
export interface MaterialQuery {
|
|
id?: string;
|
|
name?: string;
|
|
category?: string;
|
|
brand?: string;
|
|
manufacturer?: string;
|
|
spec?: string;
|
|
envGrade?: string;
|
|
healthGrade?: string;
|
|
scope?: 'public' | 'self';
|
|
favorited?: string;
|
|
page?: number;
|
|
pageSize?: number;
|
|
sort?: string;
|
|
}
|
|
|
|
export interface Paged<T> {
|
|
total: number;
|
|
page: number;
|
|
pageSize: number;
|
|
items: T[];
|
|
}
|
|
|
|
export interface MaterialInput {
|
|
name: string;
|
|
category: string;
|
|
brand?: string;
|
|
manufacturer?: string;
|
|
spec?: string;
|
|
envGrade?: string;
|
|
healthGrade?: string;
|
|
usageUnit?: string;
|
|
sortOrder?: number;
|
|
emissionParams: Record<Pollutant, EmissionParams>;
|
|
}
|
|
|
|
export function listMaterials(q: MaterialQuery) {
|
|
return http.get<any, Paged<Material>>('/materials', { params: q });
|
|
}
|
|
|
|
export function getMaterial(id: string) {
|
|
return http.get<any, Material>(`/materials/${id}`);
|
|
}
|
|
|
|
export function createMaterial(input: MaterialInput) {
|
|
return http.post<any, Material>('/materials', input);
|
|
}
|
|
|
|
export function bulkCreateMaterials(items: MaterialInput[]) {
|
|
return http.post<any, { created: number }>('/materials/bulk', { items });
|
|
}
|
|
|
|
export function updateMaterial(id: string, input: Partial<MaterialInput>) {
|
|
return http.patch<any, Material>(`/materials/${id}`, input);
|
|
}
|
|
|
|
export function deleteMaterial(id: string) {
|
|
return http.delete<any, { success: boolean }>(`/materials/${id}`);
|
|
}
|