<?php
/**
* Validates dataset configurations.
*
* @param array $dataset_configs An array of dataset configurations.
* @return array An array of validation errors. Empty array if no errors.
*/
function validateDatasetConfigs(array $dataset_configs): array
{
$errors = [];
foreach ($dataset_configs as $dataset_id => $config) {
// Validate required fields
if (empty($config['dataset_name'])) {
$errors[$dataset_id] = "Dataset name is required.";
}
if (empty($config['data_source'])) {
$errors[$dataset_id] = "Data source is required.";
}
if (empty($config['schema_path'])) {
$errors[$dataset_id] = "Schema path is required.";
}
// Validate data source format
if (!is_string($config['data_source'])) {
$errors[$dataset_id] = "Data source must be a string.";
}
// Validate schema path format
if (!is_string($config['schema_path'])) {
$errors[$dataset_id] = "Schema path must be a string.";
}
// Validate data type (example: 'csv', 'json', etc.)
if (empty($config['data_type'])) {
$errors[$dataset_id] = "Data type is required.";
}
$valid_data_types = ['csv', 'json', 'sql']; //Example valid types
if (!in_array(strtolower($config['data_type']), $valid_data_types)) {
$errors[$dataset_id] = "Invalid data type. Allowed types are: " . implode(', ', $valid_data_types);
}
// Validate connection parameters (example for SQL)
if (strtolower($config['data_type']) === 'sql') {
if (empty($config['db_host'])) {
$errors[$dataset_id] = "Database host is required for SQL data sources.";
}
if (empty($config['db_name'])) {
$errors[$dataset_id] = "Database name is required for SQL data sources.";
}
if (empty($config['db_user'])) {
$errors[$dataset_id] = "Database user is required for SQL data sources.";
}
if (empty($config['db_password'])) {
$errors[$dataset_id] = "Database password is required for SQL data sources.";
}
}
}
return $errors;
}
//Example Usage
/*
$dataset_configs = [
1 => [
'dataset_name' => 'Customer Data',
'data_source' => 'data.csv',
'schema_path' => '/path/to/schema.json',
'data_type' => 'csv'
],
2 => [
'dataset_name' => 'Product Catalog',
'data_source' => 'products.json',
'schema_path' => '/path/to/product_schema.json',
'data_type' => 'json'
],
3 => [
'dataset_name' => 'Sales Data',
'data_source' => 'mydb',
'schema_path' => '/path/to/sql_schema.json',
'data_type' => 'sql'
]
];
$validation_errors = validateDatasetConfigs($dataset_configs);
if (!empty($validation_errors)) {
echo "Validation Errors:\n";
foreach ($validation_errors as $dataset_id => $error) {
echo "Dataset " . $dataset_id . ": " . $error . "\n";
}
} else {
echo "All datasets are valid.\n";
}
*/
?>
Add your comment