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 }