Refactor: Implement type safety plan

This commit is contained in:
gpt-engineer-app[bot]
2025-10-17 14:35:15 +00:00
parent 921abb63a1
commit 0db54b402b
12 changed files with 290 additions and 38 deletions

View File

@@ -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;
}