/ client / src / utils / queryExternalDB.ts
queryExternalDB.ts
 1  import { useQuery } from "@tanstack/react-query";
 2  import { getAPIURL } from "./url";
 3  
 4  export enum SpoolType {
 5    PLASTIC = "plastic",
 6    CARDBOARD = "cardboard",
 7    METAL = "metal",
 8  }
 9  
10  export enum Finish {
11    MATTE = "matte",
12    GLOSSY = "glossy",
13  }
14  
15  export enum MultiColorDirection {
16    COAXIAL = "coaxial",
17    LONGITUDINAL = "longitudinal",
18  }
19  
20  export enum Pattern {
21    MARBLE = "marble",
22    SPARKLE = "sparkle",
23  }
24  
25  export interface ExternalFilament {
26    id: string;
27    manufacturer: string;
28    name: string;
29    material: string;
30    density: number;
31    weight: number;
32    spool_weight?: number;
33    spool_type?: SpoolType;
34    diameter: number;
35    color_hex?: string;
36    color_hexes?: string[];
37    extruder_temp?: number;
38    bed_temp?: number;
39    finish?: Finish;
40    multi_color_direction?: MultiColorDirection;
41    pattern?: Pattern;
42    translucent: boolean;
43    glow: boolean;
44  }
45  
46  export interface ExternalMaterial {
47    material: string;
48    density: number;
49    extruder_temp: number | null;
50    bed_temp: number | null;
51  }
52  
53  export function useGetExternalDBFilaments() {
54    return useQuery<ExternalFilament[]>({
55      queryKey: ["external", "filaments"],
56      staleTime: 60,
57      queryFn: async () => {
58        const response = await fetch(`${getAPIURL()}/external/filament`);
59        return response.json();
60      },
61    });
62  }
63  
64  export function useGetExternalDBMaterials() {
65    return useQuery<ExternalMaterial[]>({
66      queryKey: ["external", "materials"],
67      staleTime: 60,
68      queryFn: async () => {
69        const response = await fetch(`${getAPIURL()}/external/material`);
70        return response.json();
71      },
72    });
73  }