Skip to main content
Glama
test_execute.rs2.25 kB
use axum::{ Json, extract::{ Host, OriginalUri, Path, }, }; use dal::{ ChangeSetId, ComponentId, Func, FuncId, WorkspacePk, func::authoring::FuncAuthoringClient, }; use serde::{ Deserialize, Serialize, }; use si_events::{ FuncRunId, audit_log::AuditLogKind, }; use super::FuncAPIResult; use crate::{ extract::{ HandlerContext, PosthogClient, }, service::v2::AccessBuilder, track, }; #[derive(Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct TestExecuteFuncRequest { pub args: serde_json::Value, pub code: String, pub component_id: ComponentId, } #[derive(Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct TestExecuteFuncResponse { func_run_id: FuncRunId, } pub async fn test_execute( HandlerContext(builder): HandlerContext, AccessBuilder(access_builder): AccessBuilder, PosthogClient(posthog_client): PosthogClient, OriginalUri(original_uri): OriginalUri, Host(host_name): Host, Path((_workspace_pk, change_set_id, func_id)): Path<(WorkspacePk, ChangeSetId, FuncId)>, Json(request): Json<TestExecuteFuncRequest>, ) -> FuncAPIResult<Json<TestExecuteFuncResponse>> { let ctx = builder .build(access_builder.build(change_set_id.into())) .await?; let func = Func::get_by_id(&ctx, func_id).await?; let func_run_id = FuncAuthoringClient::test_execute_func( &ctx, func_id, request.args, Some(request.code), request.component_id, ) .await?; track( &posthog_client, &ctx, &original_uri, &host_name, "test_execute", serde_json::json!({ "how": "/func/test_execute", "func_id": func_id, "func_name": func.name.clone(), "component_id": request.component_id, }), ); ctx.write_audit_log( AuditLogKind::TestFunction { func_id, func_display_name: func.display_name, func_run_id, }, func.name.clone(), ) .await?; ctx.commit().await?; Ok(Json(TestExecuteFuncResponse { func_run_id })) }

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