mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 20:11:14 -05:00
Refactor: Implement type safety plan
This commit is contained in:
@@ -62,14 +62,39 @@ export async function getVersionStats(
|
||||
entityType: EntityType,
|
||||
entityId: string
|
||||
) {
|
||||
const versionTable = `${entityType}_versions`;
|
||||
const entityIdCol = `${entityType}_id`;
|
||||
|
||||
const { data, error } = await supabase
|
||||
.from(versionTable as any)
|
||||
.select('version_number, created_at, change_type', { count: 'exact' })
|
||||
.eq(entityIdCol, entityId)
|
||||
.order('version_number', { ascending: true });
|
||||
// Directly query the version table based on entity type
|
||||
// Use simpler type inference to avoid TypeScript deep instantiation issues
|
||||
let result;
|
||||
|
||||
if (entityType === 'park') {
|
||||
result = await supabase
|
||||
.from('park_versions')
|
||||
.select('version_number, created_at, change_type', { count: 'exact' })
|
||||
.eq('park_id', entityId)
|
||||
.order('version_number', { ascending: true });
|
||||
} else if (entityType === 'ride') {
|
||||
result = await supabase
|
||||
.from('ride_versions')
|
||||
.select('version_number, created_at, change_type', { count: 'exact' })
|
||||
.eq('ride_id', entityId)
|
||||
.order('version_number', { ascending: true });
|
||||
} else if (entityType === 'company') {
|
||||
result = await supabase
|
||||
.from('company_versions')
|
||||
.select('version_number, created_at, change_type', { count: 'exact' })
|
||||
.eq('company_id', entityId)
|
||||
.order('version_number', { ascending: true });
|
||||
} else {
|
||||
result = await supabase
|
||||
.from('ride_model_versions')
|
||||
.select('version_number, created_at, change_type', { count: 'exact' })
|
||||
.eq('ride_model_id', entityId)
|
||||
.order('version_number', { ascending: true });
|
||||
}
|
||||
|
||||
const { data, error } = result;
|
||||
|
||||
if (error || !data) {
|
||||
console.error('Failed to fetch version stats:', error);
|
||||
@@ -159,13 +184,30 @@ export async function hasVersions(
|
||||
entityType: EntityType,
|
||||
entityId: string
|
||||
): Promise<boolean> {
|
||||
const versionTable = `${entityType}_versions`;
|
||||
const entityIdCol = `${entityType}_id`;
|
||||
// Directly query the version table based on entity type with explicit column names
|
||||
let result;
|
||||
|
||||
const { count } = await supabase
|
||||
.from(versionTable as any)
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq(entityIdCol, entityId);
|
||||
if (entityType === 'park') {
|
||||
result = await supabase
|
||||
.from('park_versions')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('park_id', entityId);
|
||||
} else if (entityType === 'ride') {
|
||||
result = await supabase
|
||||
.from('ride_versions')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('ride_id', entityId);
|
||||
} else if (entityType === 'company') {
|
||||
result = await supabase
|
||||
.from('company_versions')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('company_id', entityId);
|
||||
} else {
|
||||
result = await supabase
|
||||
.from('ride_model_versions')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('ride_model_id', entityId);
|
||||
}
|
||||
|
||||
return (count || 0) > 0;
|
||||
return (result.count || 0) > 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user