From fc40e1a5dd9620d404849d4a440a7ad2c4faa7ea Mon Sep 17 00:00:00 2001 From: JohnDoe6345789 Date: Thu, 25 Dec 2025 19:37:36 +0000 Subject: [PATCH] code: dbal,client (1 files) --- dbal/ts/src/core/client.ts | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/dbal/ts/src/core/client.ts b/dbal/ts/src/core/client.ts index 099815d9d..d6267f74d 100644 --- a/dbal/ts/src/core/client.ts +++ b/dbal/ts/src/core/client.ts @@ -10,6 +10,8 @@ import { validateUserUpdate, validatePageCreate, validatePageUpdate, + validateComponentHierarchyCreate, + validateComponentHierarchyUpdate, validateId, } from './validation' @@ -263,18 +265,66 @@ export class DBALClient { get components() { return { create: async (data: Omit): Promise => { + const validationErrors = validateComponentHierarchyCreate(data) + if (validationErrors.length > 0) { + throw DBALError.validationError( + 'Invalid component data', + validationErrors.map(error => ({ field: 'component', error })) + ) + } + return this.adapter.create('ComponentHierarchy', data) as Promise }, read: async (id: string): Promise => { + const validationErrors = validateId(id) + if (validationErrors.length > 0) { + throw DBALError.validationError( + 'Invalid component ID', + validationErrors.map(error => ({ field: 'id', error })) + ) + } + return this.adapter.read('ComponentHierarchy', id) as Promise }, update: async (id: string, data: Partial): Promise => { + const idErrors = validateId(id) + if (idErrors.length > 0) { + throw DBALError.validationError( + 'Invalid component ID', + idErrors.map(error => ({ field: 'id', error })) + ) + } + + const validationErrors = validateComponentHierarchyUpdate(data) + if (validationErrors.length > 0) { + throw DBALError.validationError( + 'Invalid component update data', + validationErrors.map(error => ({ field: 'component', error })) + ) + } + return this.adapter.update('ComponentHierarchy', id, data) as Promise }, delete: async (id: string): Promise => { + const validationErrors = validateId(id) + if (validationErrors.length > 0) { + throw DBALError.validationError( + 'Invalid component ID', + validationErrors.map(error => ({ field: 'id', error })) + ) + } + return this.adapter.delete('ComponentHierarchy', id) }, getTree: async (pageId: string): Promise => { + const validationErrors = validateId(pageId) + if (validationErrors.length > 0) { + throw DBALError.validationError( + 'Invalid page ID', + validationErrors.map(error => ({ field: 'pageId', error })) + ) + } + const result = await this.adapter.list('ComponentHierarchy', { filter: { pageId } }) return result.data as ComponentHierarchy[] },