mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-21 01:31:12 -05:00
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import { useQuery } from '@tanstack/react-query';
|
|
import { supabase } from '@/lib/supabaseClient';
|
|
|
|
export interface TechnicalSpecification {
|
|
id: string;
|
|
entity_type: 'ride' | 'ride_model';
|
|
entity_id: string;
|
|
spec_name: string;
|
|
spec_value: string;
|
|
spec_unit?: string | null;
|
|
category?: string | null;
|
|
display_order: number;
|
|
created_at: string;
|
|
}
|
|
|
|
export function useTechnicalSpecifications(
|
|
entityType: 'ride' | 'ride_model',
|
|
entityId: string | undefined
|
|
) {
|
|
return useQuery({
|
|
queryKey: ['technical-specifications', entityType, entityId],
|
|
queryFn: async () => {
|
|
if (!entityId) return [];
|
|
|
|
const tableName = entityType === 'ride'
|
|
? 'ride_technical_specifications'
|
|
: 'ride_model_technical_specifications';
|
|
const idColumn = entityType === 'ride' ? 'ride_id' : 'ride_model_id';
|
|
|
|
if (entityType === 'ride') {
|
|
const { data, error } = await supabase
|
|
.from('ride_technical_specifications')
|
|
.select('*')
|
|
.eq('ride_id', entityId)
|
|
.order('display_order');
|
|
|
|
if (error) throw error;
|
|
|
|
return (data || []).map((spec) => ({
|
|
id: spec.id,
|
|
entity_type: 'ride' as const,
|
|
entity_id: entityId,
|
|
spec_name: spec.spec_name,
|
|
spec_value: spec.spec_value,
|
|
spec_unit: spec.unit || null,
|
|
category: spec.category || null,
|
|
display_order: spec.display_order,
|
|
created_at: spec.created_at,
|
|
})) as TechnicalSpecification[];
|
|
} else {
|
|
const { data, error } = await supabase
|
|
.from('ride_model_technical_specifications')
|
|
.select('*')
|
|
.eq('ride_model_id', entityId)
|
|
.order('display_order');
|
|
|
|
if (error) throw error;
|
|
|
|
return (data || []).map((spec) => ({
|
|
id: spec.id,
|
|
entity_type: 'ride_model' as const,
|
|
entity_id: entityId,
|
|
spec_name: spec.spec_name,
|
|
spec_value: spec.spec_value,
|
|
spec_unit: spec.unit || null,
|
|
category: spec.category || null,
|
|
display_order: spec.display_order,
|
|
created_at: spec.created_at,
|
|
})) as TechnicalSpecification[];
|
|
}
|
|
},
|
|
enabled: !!entityId
|
|
});
|
|
}
|