staticql
Version:
Type-safe query engine for static content including Markdown, YAML, JSON, and more.
183 lines (182 loc) • 6.31 kB
JSON
{
"sources": {
"herbs": {
"pattern": "content/herbs/*.md",
"type": "markdown",
"schema": {
"type": "object",
"required": ["name", "tagSlugs", "overview"],
"properties": {
"name": { "type": "string" },
"compoundSlugs": {
"type": "array",
"items": {
"type": "string"
}
},
"tagSlugs": {
"type": "array",
"items": {
"type": "string"
}
},
"overview": { "type": "string" },
"efficacy": { "type": "string" }
}
},
"relations": {
"compounds": {
"to": "compounds",
"localKey": "compoundSlugs",
"foreignKey": "slug",
"type": "hasMany"
},
"tags": {
"to": "tags",
"localKey": "tagSlugs",
"foreignKey": "slug",
"type": "hasMany"
},
"recipes": {
"to": "recipes",
"through": "recipeGroups",
"sourceLocalKey": "slug",
"throughForeignKey": "combinedHerbs.slug",
"throughLocalKey": "slug",
"targetForeignKey": "recipeGroupSlug",
"type": "hasManyThrough"
}
},
"index": {
"name": {},
"compoundSlugs": {},
"tagSlugs": {},
"recipes.recipeGroupSlug": {}
}
},
"tags": {
"type": "yaml",
"pattern": "content/tags.yaml",
"schema": {
"type": "object",
"required": ["slug", "name"],
"properties": {
"slug": { "type": "string" },
"name": { "type": "string" }
}
}
},
"compounds": {
"type": "yaml",
"pattern": "content/compounds.yaml",
"schema": {
"type": "object",
"required": ["slug", "name"],
"properties": {
"slug": { "type": "string" },
"name": { "type": "string" }
}
}
},
"recipes": {
"pattern": "content/recipes/**/*.md",
"type": "markdown",
"schema": {
"type": "object",
"required": ["recipeGroupSlug", "recipe"],
"properties": {
"recipeGroupSlug": { "type": "string" },
"summary": { "type": "string" },
"processSlug": { "type": "string" },
"recipe": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"relations": {
"herbs": {
"to": "herbs",
"through": "recipeGroups",
"sourceLocalKey": "recipeGroupSlug",
"throughForeignKey": "slug",
"throughLocalKey": "combinedHerbs.slug",
"targetForeignKey": "slug",
"type": "hasManyThrough"
},
"process": {
"to": "processes",
"through": "recipeGroups",
"sourceLocalKey": "recipeGroupSlug",
"throughForeignKey": "slug",
"throughLocalKey": "processSlug",
"targetForeignKey": "slug",
"type": "hasOneThrough"
}
},
"index": { "herbs.slug": {} }
},
"recipeGroups": {
"type": "yaml",
"pattern": "content/recipeGroups.yaml",
"schema": {
"type": "object",
"required": ["slug", "processSlug", "combinedHerbs"],
"properties": {
"slug": { "type": "string" },
"processSlug": { "type": "string" },
"combinedHerbs": {
"type": "array",
"items": {
"type": "object",
"required": ["slug", "herbStateSlug", "herbPartSlug"],
"properties": {
"slug": { "type": "string" },
"herbStateSlug": { "type": "string" },
"herbPartSlug": { "type": "string" }
}
}
}
}
}
},
"herbParts": {
"type": "yaml",
"pattern": "content/processes.yaml",
"schema": {
"type": "object",
"required": ["slug", "name"],
"properties": {
"slug": { "type": "string" },
"name": { "type": "string" }
}
}
},
"herbStates": {
"type": "yaml",
"pattern": "content/herbStates.yaml",
"schema": {
"type": "object",
"required": ["slug", "name"],
"properties": {
"slug": { "type": "string" },
"name": { "type": "string" }
}
}
},
"processes": {
"type": "yaml",
"pattern": "content/processes.yaml",
"schema": {
"type": "object",
"required": ["slug", "name"],
"properties": {
"slug": { "type": "string" },
"name": { "type": "string" }
}
}
}
}
}