From b7ae507367ea72136e90b26189dae5100415201e Mon Sep 17 00:00:00 2001 From: alphaeusmote <41258468-alphaeusmote@users.noreply.replit.com> Date: Thu, 10 Apr 2025 03:49:58 +0000 Subject: [PATCH] Improve domain creation: Allow optional provider ID. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 9111ef36-26c8-4085-84ca-a35dc1fec1b5 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7083d608-d6d3-4a6a-9a27-6286c5109627/752f28c8-2f6f-4065-8649-1fc8dea4498d.jpg --- server/routes.ts | 10 +++++++++- shared/schema.ts | 17 +++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/server/routes.ts b/server/routes.ts index 2f3a00c..978a770 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -190,7 +190,15 @@ export async function registerRoutes(app: Express): Promise { app.post("/api/domains", requireRole(["admin", "manager"]), async (req, res) => { try { - const validatedData = insertDomainSchema.parse(req.body); + // Create a custom validation schema for the API that makes providerId optional + const domainSchema = z.object({ + name: z.string(), + organizationId: z.string().uuid(), + providerId: z.string().uuid().optional(), + isActive: z.boolean().optional().default(true) + }); + + const validatedData = domainSchema.parse(req.body); const domain = await storage.createDomain(validatedData); res.status(201).json(domain); } catch (error) { diff --git a/shared/schema.ts b/shared/schema.ts index 70eec54..06378ff 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -191,12 +191,17 @@ export const insertOrganizationSchema = createInsertSchema(organizations).pick({ isActive: true, }); -export const insertDomainSchema = createInsertSchema(domains).pick({ - name: true, - organizationId: true, - providerId: true, - isActive: true, -}); +export const insertDomainSchema = createInsertSchema(domains) + .pick({ + name: true, + organizationId: true, + providerId: true, + isActive: true, + }) + .extend({ + // Override providerId to make it optional + providerId: z.string().uuid().optional(), + }); export const insertDnsRecordSchema = createInsertSchema(dnsRecords).pick({ domainId: true,