diff --git a/server/database-storage.ts b/server/database-storage.ts index 758d8cf..00ec249 100644 --- a/server/database-storage.ts +++ b/server/database-storage.ts @@ -203,21 +203,24 @@ export class DatabaseStorage implements IStorage { try { // Use raw SQL to avoid schema issues const now = new Date().toISOString(); + + // Build SQL dynamically based on whether providerId is provided + let columnsSQL; + let valuesSQL; + + if (domain.providerId) { + columnsSQL = sql`id, name, organization_id, is_active, provider_id, created_at`; + valuesSQL = sql`gen_random_uuid(), ${domain.name}, ${domain.organizationId}, ${domain.isActive}, ${domain.providerId}, ${now}`; + } else { + columnsSQL = sql`id, name, organization_id, is_active, created_at`; + valuesSQL = sql`gen_random_uuid(), ${domain.name}, ${domain.organizationId}, ${domain.isActive}, ${now}`; + } + const query = sql` INSERT INTO domains ( - id, - name, - organization_id, - is_active, - provider_id, - created_at + ${columnsSQL} ) VALUES ( - gen_random_uuid(), - ${domain.name}, - ${domain.organizationId}, - ${domain.isActive}, - ${domain.providerId || null}, - ${now} + ${valuesSQL} ) RETURNING id, diff --git a/server/routes.ts b/server/routes.ts index 978a770..3b34f3b 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -215,7 +215,16 @@ export async function registerRoutes(app: Express): Promise { try { // Use id as string without parsing to int const id = req.params.id; - const validatedData = insertDomainSchema.partial().parse(req.body); + + // Create custom validation schema with optional providerId + const domainUpdateSchema = z.object({ + name: z.string().optional(), + organizationId: z.string().uuid().optional(), + providerId: z.string().uuid().optional().nullable(), + isActive: z.boolean().optional() + }); + + const validatedData = domainUpdateSchema.parse(req.body); const updatedDomain = await storage.updateDomain(id, validatedData);