From 482cf9c0af5f5db440c30a27ac95b21a48d62e6b Mon Sep 17 00:00:00 2001 From: Konstantinos Kopanidis Date: Mon, 6 Jul 2026 11:41:33 +0300 Subject: [PATCH] feat(database): use PUT for schema field saves Schema editor sends full fields via putSchema; settings panel keeps PATCH for conduitOptions only. --- src/components/database/models/schema-editor/index.tsx | 4 ++-- src/lib/api/database/index.ts | 7 +++++++ src/lib/models/database/schemas.ts | 10 ++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/components/database/models/schema-editor/index.tsx b/src/components/database/models/schema-editor/index.tsx index 9efdf2d5b..053456354 100644 --- a/src/components/database/models/schema-editor/index.tsx +++ b/src/components/database/models/schema-editor/index.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { DeclaredSchema } from '@/lib/models/database'; -import { createSchema, patchSchema } from '@/lib/api/database'; +import { createSchema, putSchema } from '@/lib/api/database'; import { FieldsTable, FormField, transformFieldsForApi } from './fields-table'; import { SchemaPreview } from './schema-preview'; import { Button } from '@/components/ui/button'; @@ -268,7 +268,7 @@ export function SchemaEditor({ toast({ title: 'Schema created successfully' }); onSave?.(result); } else { - await patchSchema(schema._id, { + await putSchema(schema._id, { fields: fieldsObject, }); toast({ title: 'Schema updated successfully' }); diff --git a/src/lib/api/database/index.ts b/src/lib/api/database/index.ts index 7f0e820b6..d08896847 100644 --- a/src/lib/api/database/index.ts +++ b/src/lib/api/database/index.ts @@ -7,6 +7,7 @@ import { DeclaredSchema, PatchSchemaRequest, PendingSchemas, + PutSchemaRequest, SchemaOptions, } from '@/lib/models/database'; import { CustomEndpoint } from '@/lib/models/database/custom-endpoints'; @@ -86,6 +87,12 @@ export const patchSchema = async (id: string, schema: PatchSchemaRequest) => { .then(res => res.data); }; +export const putSchema = async (id: string, schema: PutSchemaRequest) => { + return await (await getApiClient()) + .put(`/database/schemas/${id}`, schema) + .then(res => res.data); +}; + export const updateExtensions = async ( id: string, fields: DeclaredSchema['fields'] diff --git a/src/lib/models/database/schemas.ts b/src/lib/models/database/schemas.ts index 34601f427..c09aceb84 100644 --- a/src/lib/models/database/schemas.ts +++ b/src/lib/models/database/schemas.ts @@ -58,8 +58,8 @@ export type DeclaredSchema = { updatedAt: string; }; -/** PATCH /database/schemas/:id — matches Database admin route bodyParams */ -export type PatchSchemaRequest = Partial> & { +/** PATCH /database/schemas/:id — conduitOptions only; field edits go through PUT */ +export type PatchSchemaRequest = { /** Nested shapes are permissive — callers build objects from forms */ conduitOptions?: { cms?: Record; @@ -69,6 +69,12 @@ export type PatchSchemaRequest = Partial> & { readPreference?: string; }; }; + +/** PUT /database/schemas/:id — full field replacement */ +export type PutSchemaRequest = Pick & { + conduitOptions?: PatchSchemaRequest['conduitOptions']; +}; + export type CreateSchemaRequest = { name: string; fields: any;