use super::{
BuiltinSignature, Param, ShapeFieldDescriptor, Ty, TY_BOOL, TY_DICT_OR_NIL, TY_INT, TY_NIL,
TY_STRING, TY_STRING_OR_NIL,
};
const SCHEMA_RECOVER_ENVELOPE: Ty = Ty::Shape(&[
ShapeFieldDescriptor::new("ok", TY_BOOL),
ShapeFieldDescriptor::new("data", Ty::Union(&[Ty::Generic("T"), TY_NIL])),
ShapeFieldDescriptor::new("raw_text", TY_STRING),
ShapeFieldDescriptor::new("error", TY_STRING),
ShapeFieldDescriptor::new("error_category", TY_STRING_OR_NIL),
ShapeFieldDescriptor::new("attempts", TY_INT),
ShapeFieldDescriptor::new("stage", TY_STRING),
ShapeFieldDescriptor::new("repaired", TY_BOOL),
]);
pub(crate) const SIGNATURES: &[BuiltinSignature] = &[
BuiltinSignature::generic(
"schema_recover",
&["T"],
&[
Param::new("text", TY_STRING),
Param::new("schema", Ty::SchemaOf("T")),
Param::optional("options", TY_DICT_OR_NIL),
],
SCHEMA_RECOVER_ENVELOPE,
),
];