feat: enhance API response handling and add new components for module management
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 4m50s
Workflow / ⚫️ Test (push) Has been skipped

This commit is contained in:
T. Zehetbauer
2026-04-01 15:18:24 +02:00
parent f82a366a52
commit 7b078f298b
58 changed files with 1845 additions and 398 deletions

View File

@@ -14,6 +14,7 @@
"./schema/*": "./src/schema/*.ts",
"./hooks/*": "./src/hooks/*.ts",
"./components": "./src/components/index.ts",
"./actions/*": "./src/server/actions/*.ts",
"./services/*": "./src/server/services/*.ts"
},
"scripts": {

View File

@@ -22,14 +22,14 @@ export const createModule = authActionClient
'Creating module...',
);
const module = await api.modules.createModule(input);
const data = await api.modules.createModule(input);
logger.info(
{ name: 'modules.create', moduleId: module.id },
{ name: 'modules.create', moduleId: data.id },
'Module created',
);
return { success: true, module };
return { success: true, data };
});
export const updateModule = authActionClient
@@ -44,14 +44,14 @@ export const updateModule = authActionClient
'Updating module...',
);
const module = await api.modules.updateModule(input);
const data = await api.modules.updateModule(input);
logger.info(
{ name: 'modules.update', moduleId: module.id },
{ name: 'modules.update', moduleId: data.id },
'Module updated',
);
return { success: true, module };
return { success: true, data };
});
export const deleteModule = authActionClient

View File

@@ -52,7 +52,11 @@ export const createRecord = authActionClient
);
if (!validation.success) {
return { success: false, errors: validation.errors };
return {
success: false,
error: 'Validierungsfehler',
validationErrors: validation.errors,
};
}
logger.info(
@@ -72,7 +76,7 @@ export const createRecord = authActionClient
newData: input.data as Record<string, unknown>,
});
return { success: true, record };
return { success: true, data: record };
});
export const updateRecord = authActionClient
@@ -86,6 +90,40 @@ export const updateRecord = authActionClient
// Get existing record for audit
const existing = await api.records.getRecord(input.recordId);
// Validate data against field definitions
const moduleId = existing.module_id as string;
const moduleWithFields = await api.modules.getModuleWithFields(moduleId);
if (!moduleWithFields) {
throw new Error('Module not found');
}
const fields = (
moduleWithFields as unknown as {
fields: Array<{
name: string;
field_type: string;
is_required: boolean;
min_value?: number | null;
max_value?: number | null;
max_length?: number | null;
regex_pattern?: string | null;
}>;
}
).fields;
const validation = validateRecordData(
input.data as Record<string, unknown>,
fields as Parameters<typeof validateRecordData>[1],
);
if (!validation.success) {
return {
success: false,
error: 'Validierungsfehler',
validationErrors: validation.errors,
};
}
logger.info(
{ name: 'records.update', recordId: input.recordId },
'Updating record...',
@@ -104,7 +142,7 @@ export const updateRecord = authActionClient
newData: input.data as Record<string, unknown>,
});
return { success: true, record };
return { success: true, data: record };
});
export const deleteRecord = authActionClient
@@ -156,5 +194,5 @@ export const lockRecord = authActionClient
newData: { locked: input.lock },
});
return { success: true, record };
return { success: true, data: record };
});