1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use key_path::path;
use crate::action::Action;
use crate::action::action::*;
use crate::model::Model;
use serde_json::{Value as JsonValue};
use teo_parser::r#type::synthesized_shape_reference::SynthesizedShapeReferenceKind;
use teo_teon::Value;
use crate::coder::json_to_teon;
use crate::namespace::Namespace;

pub fn validate_and_transform_json_input_for_builtin_action(model: &Model, action: Action, json_body: &JsonValue, main_namespace: &Namespace) -> crate::path::Result<Value> {
    let input= match action {
        FIND_UNIQUE_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::FindUniqueArgs).unwrap(),
        FIND_FIRST_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::FindFirstArgs).unwrap(),
        FIND_MANY_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::FindManyArgs).unwrap(),
        CREATE_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::CreateArgs).unwrap(),
        UPDATE_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::UpdateArgs).unwrap(),
        COPY_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::CopyArgs).unwrap(),
        UPSERT_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::UpsertArgs).unwrap(),
        DELETE_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::DeleteArgs).unwrap(),
        CREATE_MANY_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::CreateManyArgs).unwrap(),
        UPDATE_MANY_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::UpdateManyArgs).unwrap(),
        COPY_MANY_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::CopyManyArgs).unwrap(),
        DELETE_MANY_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::DeleteManyArgs).unwrap(),
        COUNT_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::CountArgs).unwrap(),
        AGGREGATE_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::AggregateArgs).unwrap(),
        GROUP_BY_HANDLER => model.cache.shape.get(SynthesizedShapeReferenceKind::GroupByArgs).unwrap(),
        _ => Err(crate::path::Error::value_error(path![], "unfound input definition"))?,
    };
    json_to_teon(json_body, &path![], input, main_namespace)
}