use systemprompt_identifiers::error::IdValidationError;
use systemprompt_identifiers::{
AgentName, AiRequestId, ApiKeyId, CampaignId, CategoryId, Email, ExtensionId, JobName,
LinkClickId, LinkId, McpServerId, McpToolName, ModelId, PluginId, ProfileName, ProviderId,
SecretName, ServiceName, SkillId, TenantId, TraceId,
};
macro_rules! id_parsers {
($($fn_name:ident => $ty:ident),* $(,)?) => {
$(
pub fn $fn_name(s: &str) -> Result<$ty, IdValidationError> {
$ty::try_new(s)
}
)*
};
}
id_parsers! {
parse_profile_name => ProfileName,
parse_email => Email,
parse_extension_id => ExtensionId,
parse_agent_name => AgentName,
parse_ai_request_id => AiRequestId,
parse_api_key_id => ApiKeyId,
parse_campaign_id => CampaignId,
parse_category_id => CategoryId,
parse_job_name => JobName,
parse_link_click_id => LinkClickId,
parse_link_id => LinkId,
parse_mcp_server_id => McpServerId,
parse_mcp_tool_name => McpToolName,
parse_plugin_id => PluginId,
parse_service_name => ServiceName,
parse_tenant_id => TenantId,
parse_trace_id => TraceId,
parse_provider_id => ProviderId,
parse_model_id => ModelId,
parse_secret_name => SecretName,
parse_skill_id => SkillId,
}
pub fn parse_profile_name_arg(s: &str) -> Result<String, IdValidationError> {
ProfileName::try_new(s).map(|name| name.as_str().to_owned())
}