1. <?php
  2. /**
  3. * Validates dataset configurations.
  4. *
  5. * @param array $dataset_configs An array of dataset configurations.
  6. * @return array An array of validation errors. Empty array if no errors.
  7. */
  8. function validateDatasetConfigs(array $dataset_configs): array
  9. {
  10. $errors = [];
  11. foreach ($dataset_configs as $dataset_id => $config) {
  12. // Validate required fields
  13. if (empty($config['dataset_name'])) {
  14. $errors[$dataset_id] = "Dataset name is required.";
  15. }
  16. if (empty($config['data_source'])) {
  17. $errors[$dataset_id] = "Data source is required.";
  18. }
  19. if (empty($config['schema_path'])) {
  20. $errors[$dataset_id] = "Schema path is required.";
  21. }
  22. // Validate data source format
  23. if (!is_string($config['data_source'])) {
  24. $errors[$dataset_id] = "Data source must be a string.";
  25. }
  26. // Validate schema path format
  27. if (!is_string($config['schema_path'])) {
  28. $errors[$dataset_id] = "Schema path must be a string.";
  29. }
  30. // Validate data type (example: 'csv', 'json', etc.)
  31. if (empty($config['data_type'])) {
  32. $errors[$dataset_id] = "Data type is required.";
  33. }
  34. $valid_data_types = ['csv', 'json', 'sql']; //Example valid types
  35. if (!in_array(strtolower($config['data_type']), $valid_data_types)) {
  36. $errors[$dataset_id] = "Invalid data type. Allowed types are: " . implode(', ', $valid_data_types);
  37. }
  38. // Validate connection parameters (example for SQL)
  39. if (strtolower($config['data_type']) === 'sql') {
  40. if (empty($config['db_host'])) {
  41. $errors[$dataset_id] = "Database host is required for SQL data sources.";
  42. }
  43. if (empty($config['db_name'])) {
  44. $errors[$dataset_id] = "Database name is required for SQL data sources.";
  45. }
  46. if (empty($config['db_user'])) {
  47. $errors[$dataset_id] = "Database user is required for SQL data sources.";
  48. }
  49. if (empty($config['db_password'])) {
  50. $errors[$dataset_id] = "Database password is required for SQL data sources.";
  51. }
  52. }
  53. }
  54. return $errors;
  55. }
  56. //Example Usage
  57. /*
  58. $dataset_configs = [
  59. 1 => [
  60. 'dataset_name' => 'Customer Data',
  61. 'data_source' => 'data.csv',
  62. 'schema_path' => '/path/to/schema.json',
  63. 'data_type' => 'csv'
  64. ],
  65. 2 => [
  66. 'dataset_name' => 'Product Catalog',
  67. 'data_source' => 'products.json',
  68. 'schema_path' => '/path/to/product_schema.json',
  69. 'data_type' => 'json'
  70. ],
  71. 3 => [
  72. 'dataset_name' => 'Sales Data',
  73. 'data_source' => 'mydb',
  74. 'schema_path' => '/path/to/sql_schema.json',
  75. 'data_type' => 'sql'
  76. ]
  77. ];
  78. $validation_errors = validateDatasetConfigs($dataset_configs);
  79. if (!empty($validation_errors)) {
  80. echo "Validation Errors:\n";
  81. foreach ($validation_errors as $dataset_id => $error) {
  82. echo "Dataset " . $dataset_id . ": " . $error . "\n";
  83. }
  84. } else {
  85. echo "All datasets are valid.\n";
  86. }
  87. */
  88. ?>

Add your comment