Skip to main content
Glama
katy_perry.rs4.6 kB
use dal::{ BuiltinsResult, ComponentType, DalContext, PropKind, SchemaId, pkg::{ ImportOptions, import_pkg_from_pkg, }, prop::PropPath, }; use si_pkg::{ AttrFuncInputSpec, AttrFuncInputSpecKind, LeafFunctionSpec, LeafInputLocation, LeafKind, PkgSpec, PropSpec, SchemaSpec, SchemaSpecData, SchemaVariantSpec, SchemaVariantSpecData, SiPkg, }; use crate::test_exclusive_schemas::{ PKG_CREATED_BY, PKG_VERSION, build_asset_func, build_codegen_func, create_identity_func, }; pub(crate) async fn migrate_test_exclusive_schema_katy_perry( ctx: &DalContext, schema_id: SchemaId, ) -> BuiltinsResult<()> { let mut kp_builder = PkgSpec::builder(); let schema_name = "katy perry"; kp_builder .name(schema_name) .version(PKG_VERSION) .created_by(PKG_CREATED_BY); let identity_func_spec = create_identity_func()?; // Create Scaffold Func let fn_name = "test:scaffoldKatyPerryAsset"; let kp_authoring_schema_func = build_asset_func(fn_name)?; // Build YAML CodeGen Func let yaml_codegen_fn_name = "test:generateYamlCode"; let yaml_codegen_func_code = "async function main(input: Input): Promise < Output > { return { format: \"yaml\", code: Object.keys(input.domain).length > 0 ? YAML.stringify(input.domain) : \"\" }; }"; let yaml_code_gen_func = build_codegen_func(yaml_codegen_func_code, yaml_codegen_fn_name)?; // Build string CodeGen Func let string_codegen_fn_name = "test:generateStringCode"; let string_codegen_func_code = "async function main(input: Input): Promise < Output > { return { format: \"string\", code: \"poop canoe\" }; }"; let string_code_gen_func = build_codegen_func(string_codegen_func_code, string_codegen_fn_name)?; let kp_schema = SchemaSpec::builder() .name(schema_name) .data( SchemaSpecData::builder() .name(schema_name) .category("test exclusive") .category_name(schema_name) .build()?, ) .variant( SchemaVariantSpec::builder() .version("v0") .unique_id("katy_perry_sv") .data( SchemaVariantSpecData::builder() .version("v0") .color("#ffffff") .func_unique_id(&kp_authoring_schema_func.unique_id) .component_type(ComponentType::Component) .build()?, ) .domain_prop( PropSpec::builder() .name("name") .kind(PropKind::String) .func_unique_id(&identity_func_spec.unique_id) .input( AttrFuncInputSpec::builder() .kind(AttrFuncInputSpecKind::Prop) .name("identity") .prop_path(PropPath::new(["root", "si", "name"])) .build()?, ) .build()?, ) .leaf_function( LeafFunctionSpec::builder() .func_unique_id(yaml_codegen_fn_name) .leaf_kind(LeafKind::CodeGeneration) .inputs(vec![LeafInputLocation::Domain]) .build()?, ) .leaf_function( LeafFunctionSpec::builder() .func_unique_id(string_codegen_fn_name) .leaf_kind(LeafKind::CodeGeneration) .inputs(vec![LeafInputLocation::Domain]) .build()?, ) .build()?, ) .build()?; let kp_spec = kp_builder .func(identity_func_spec) .func(yaml_code_gen_func) .func(string_code_gen_func) .func(kp_authoring_schema_func) .schema(kp_schema) .build()?; let pkg = SiPkg::load_from_spec(kp_spec)?; import_pkg_from_pkg( ctx, &pkg, Some(ImportOptions { schema_id: Some(schema_id.into()), ..Default::default() }), ) .await?; Ok(()) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server