mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 13:31:22 -05:00
Refactor: Implement Phase 3C cleanup
This commit is contained in:
@@ -1,4 +1,10 @@
|
||||
import { Database } from '@/integrations/supabase/types';
|
||||
import type {
|
||||
ParkSubmissionData,
|
||||
RideSubmissionData,
|
||||
CompanySubmissionData,
|
||||
RideModelSubmissionData,
|
||||
} from '@/types/submission-data';
|
||||
|
||||
type ParkInsert = Database['public']['Tables']['parks']['Insert'];
|
||||
type RideInsert = Database['public']['Tables']['rides']['Insert'];
|
||||
@@ -7,8 +13,10 @@ type RideModelInsert = Database['public']['Tables']['ride_models']['Insert'];
|
||||
|
||||
/**
|
||||
* Transform park submission data to database insert format
|
||||
* @param submissionData - Validated park submission data
|
||||
* @returns Database insert object for parks table
|
||||
*/
|
||||
export function transformParkData(submissionData: any): ParkInsert {
|
||||
export function transformParkData(submissionData: ParkSubmissionData): ParkInsert {
|
||||
return {
|
||||
name: submissionData.name,
|
||||
slug: submissionData.slug,
|
||||
@@ -38,8 +46,10 @@ export function transformParkData(submissionData: any): ParkInsert {
|
||||
* Transform ride submission data to database insert format
|
||||
* Note: Relational data (technical_specs, coaster_stats, former_names) are now
|
||||
* stored in separate tables and should not be included in the main ride insert.
|
||||
* @param submissionData - Validated ride submission data
|
||||
* @returns Database insert object for rides table
|
||||
*/
|
||||
export function transformRideData(submissionData: any): RideInsert {
|
||||
export function transformRideData(submissionData: RideSubmissionData): RideInsert {
|
||||
return {
|
||||
name: submissionData.name,
|
||||
slug: submissionData.slug,
|
||||
@@ -78,9 +88,12 @@ export function transformRideData(submissionData: any): RideInsert {
|
||||
|
||||
/**
|
||||
* Transform company submission data to database insert format
|
||||
* @param submissionData - Validated company submission data
|
||||
* @param companyType - Type of company (manufacturer, operator, property_owner, designer)
|
||||
* @returns Database insert object for companies table
|
||||
*/
|
||||
export function transformCompanyData(
|
||||
submissionData: any,
|
||||
submissionData: CompanySubmissionData,
|
||||
companyType: 'manufacturer' | 'operator' | 'property_owner' | 'designer'
|
||||
): CompanyInsert {
|
||||
return {
|
||||
@@ -102,8 +115,10 @@ export function transformCompanyData(
|
||||
* Transform ride model submission data to database insert format
|
||||
* Note: Technical specifications are now stored in the ride_model_technical_specifications
|
||||
* table and should not be included in the main ride model insert.
|
||||
* @param submissionData - Validated ride model submission data
|
||||
* @returns Database insert object for ride_models table
|
||||
*/
|
||||
export function transformRideModelData(submissionData: any): RideModelInsert {
|
||||
export function transformRideModelData(submissionData: RideModelSubmissionData): RideModelInsert {
|
||||
return {
|
||||
name: submissionData.name,
|
||||
slug: submissionData.slug,
|
||||
@@ -150,8 +165,14 @@ export function extractImageId(url: string): string {
|
||||
|
||||
/**
|
||||
* Validate and sanitize submission data before transformation
|
||||
* @param data - Submission data to validate
|
||||
* @param itemType - Type of entity being validated (for error messages)
|
||||
* @throws Error if validation fails
|
||||
*/
|
||||
export function validateSubmissionData(data: any, itemType: string): void {
|
||||
export function validateSubmissionData(
|
||||
data: ParkSubmissionData | RideSubmissionData | CompanySubmissionData | RideModelSubmissionData,
|
||||
itemType: string
|
||||
): void {
|
||||
if (!data.name || typeof data.name !== 'string' || data.name.trim() === '') {
|
||||
throw new Error(`${itemType} name is required`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user