use schemars::schema_for;
use crate::envelope::{Envelope, Stage};
use crate::stages::{
ClassesContent, DialogueContent, NpcsContent, QuestPlanContent, QuestsContent, WorldContent,
WorldEditsContent,
};
pub fn stage_schema(stage: Stage) -> serde_json::Value {
let schema = match stage {
Stage::World => schema_for!(Envelope<WorldContent>),
Stage::Npcs => schema_for!(Envelope<NpcsContent>),
Stage::Classes => schema_for!(Envelope<ClassesContent>),
Stage::QuestPlan => schema_for!(Envelope<QuestPlanContent>),
Stage::Quests => schema_for!(Envelope<QuestsContent>),
Stage::Dialogue => schema_for!(Envelope<DialogueContent>),
Stage::WorldEdits => schema_for!(Envelope<WorldEditsContent>),
};
serde_json::to_value(schema).expect("schema serializes to JSON")
}