SCHEMA - delete $schema , it is only a metaschema property now allowed in data, update ajv validator
This commit is contained in:
parent
0115cb501c
commit
aca901c2a7
|
@ -40,7 +40,7 @@
|
||||||
"title": "services under the category",
|
"title": "services under the category",
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "src/content/schema-services.json"
|
"$ref": "schema-services.json#"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"$id": "schema-services.json",
|
||||||
"title": "Service schema",
|
"title": "Service schema",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": ["title", "description", "id", "duration", "price"],
|
"required": ["title", "description", "id", "duration", "price"],
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
"$schema": "../../schema-categories.json",
|
|
||||||
"title": "DALŠÍ VELMI OBLÍBENÉ SLUŽBY",
|
"title": "DALŠÍ VELMI OBLÍBENÉ SLUŽBY",
|
||||||
"description": "A description of a description",
|
"description": "A description of a description",
|
||||||
"id": "depilace",
|
"id": "depilace",
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
"$schema": "../../schema-categories.json",
|
|
||||||
"title": "Depilace",
|
"title": "Depilace",
|
||||||
"description": "A description of a description",
|
"description": "A description of a description",
|
||||||
"id": "depilace",
|
"id": "depilace",
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
"$schema": "../../schema-categories.json",
|
|
||||||
"title": "Kosmetické ošetření",
|
"title": "Kosmetické ošetření",
|
||||||
"description": "A description of a description",
|
"description": "A description of a description",
|
||||||
"id": "depilace",
|
"id": "depilace",
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
"$schema": "../../schema-categories.json",
|
|
||||||
"title": "Permanentní make-up",
|
"title": "Permanentní make-up",
|
||||||
"description": "A description of a description",
|
"description": "A description of a description",
|
||||||
"id": "pmu",
|
"id": "pmu",
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
"$schema": "../../schema-categories.json",
|
|
||||||
"title": "Vakuslim 48 - zeštíhlující procedura",
|
"title": "Vakuslim 48 - zeštíhlující procedura",
|
||||||
"description": "A description of a description",
|
"description": "A description of a description",
|
||||||
"id": "depilace",
|
"id": "depilace",
|
||||||
|
|
|
@ -1,17 +1,24 @@
|
||||||
import Ajv from 'ajv';
|
import Ajv from 'ajv';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
const ajv = new Ajv({verbose: true});
|
||||||
|
// Load and add the service schema
|
||||||
|
const serviceSchema = JSON.parse(fs.readFileSync('./src/content/schema-services.json', 'utf-8'));
|
||||||
|
ajv.addSchema(serviceSchema, 'serviceSchema');
|
||||||
|
|
||||||
const serviceSchema = JSON.parse(fs.readFileSync('./src/content/schema-categories.json', 'utf-8'));
|
// Load and add the category schema
|
||||||
|
const categorySchema = JSON.parse(fs.readFileSync('./src/content/schema-categories.json', 'utf-8'));
|
||||||
|
ajv.addSchema(categorySchema, 'categorySchema');
|
||||||
|
|
||||||
|
// Compile the category schema validator
|
||||||
|
// const validate = ajv.getSchema('categorySchema');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} filePath
|
* @param {string} filePath
|
||||||
*/
|
*/
|
||||||
function validateFile(filePath) {
|
function validateFile(filePath) {
|
||||||
const ajv = new Ajv();
|
|
||||||
const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
||||||
const validate = ajv.compile(serviceSchema);
|
const validate = ajv.compile(categorySchema);
|
||||||
const valid = validate(data);
|
const valid = validate(data);
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
throw new Error(`Invalid service data in ${filePath}: ${JSON.stringify(validate.errors)}`);
|
throw new Error(`Invalid service data in ${filePath}: ${JSON.stringify(validate.errors)}`);
|
||||||
|
@ -40,6 +47,7 @@ export function validateServices() {
|
||||||
console.log('All services validated successfully!');
|
console.log('All services validated successfully!');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Error validating services: ${error}`);
|
console.error(`Error validating services: ${error}`);
|
||||||
|
console.log(ajv.errors);
|
||||||
process.exit(1); // Exit with non-zero code to signal failure
|
process.exit(1); // Exit with non-zero code to signal failure
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue