use schemars::JsonSchema;
use serde::Deserialize;
use super::de::{Located, Loose, Map, UnknownKeys};
#[derive(Deserialize, JsonSchema)]
#[schemars(title = "DRE lookup config", deny_unknown_fields)]
pub struct LookupFile {
pub columns: Option<Located<Loose<Map<Loose<ColumnType>>>>>,
pub sheet: Option<Located<Loose<String>>>,
#[schemars(extend("default" = "auto"))]
pub load: Option<Located<Loose<LoadName>>>,
#[serde(default)]
#[schemars(schema_with = "rows")]
pub rows: Option<Located<serde_json::Value>>,
#[serde(rename = "$unknown", default)]
#[schemars(skip)]
pub unknown: UnknownKeys,
}
#[derive(Deserialize, JsonSchema, Clone, Copy)]
#[serde(rename_all = "lowercase")]
#[schemars(inline)]
pub enum ColumnType {
String,
Integer,
Number,
Boolean,
Date,
}
#[derive(Deserialize, JsonSchema, Clone, Copy)]
#[serde(rename_all = "snake_case")]
#[schemars(inline)]
pub enum LoadName {
Auto,
Inline,
TempTable,
}
fn rows(_: &mut schemars::SchemaGenerator) -> schemars::Schema {
schemars::json_schema!({"type": "array", "items": {"type": "object"}})
}