pub mod agent;
pub mod agent_schedule;
pub mod agent_skill;
pub mod agent_skill_rule;
pub mod category;
pub mod event;
pub mod faq;
pub mod notification;
pub mod ticket;
pub mod ticket_customized_field;
pub mod ticket_message;
use crate::core::config::Config;
pub struct V1 {
pub agent: agent::AgentService,
pub agent_schedule: agent_schedule::AgentScheduleService,
pub agent_skill: agent_skill::AgentSkillService,
pub agent_skill_rule: agent_skill_rule::AgentSkillRuleService,
pub category: category::CategoryService,
pub event: event::EventService,
pub faq: faq::FaqService,
pub notification: notification::NotificationService,
pub ticket: ticket::TicketService,
pub ticket_customized_field: ticket_customized_field::TicketCustomizedFieldService,
pub ticket_message: ticket_message::TicketMessageService,
}
impl V1 {
pub fn new(config: Config) -> Self {
Self {
agent: agent::AgentService::new(config.clone()),
agent_schedule: agent_schedule::AgentScheduleService::new(config.clone()),
agent_skill: agent_skill::AgentSkillService::new(config.clone()),
agent_skill_rule: agent_skill_rule::AgentSkillRuleService::new(config.clone()),
category: category::CategoryService::new(config.clone()),
event: event::EventService::new(config.clone()),
faq: faq::FaqService::new(config.clone()),
notification: notification::NotificationService::new(config.clone()),
ticket: ticket::TicketService::new(config.clone()),
ticket_customized_field: ticket_customized_field::TicketCustomizedFieldService::new(
config.clone(),
),
ticket_message: ticket_message::TicketMessageService::new(config),
}
}
}
#[cfg(test)]
#[allow(unused_variables, unused_unsafe)]
mod tests {
use super::*;
use crate::core::{config::Config, constants::AppType};
fn create_test_config() -> Config {
Config::default()
}
#[test]
fn test_v1_service_creation() {
let config = create_test_config();
let service = V1::new(config);
}
#[test]
fn test_v1_service_with_different_config() {
let config = Config::builder()
.app_id("different_app_id")
.app_secret("different_app_secret")
.app_type(AppType::Marketplace)
.build();
let service = V1::new(config);
}
#[test]
fn test_v1_service_memory_safety() {
let config = create_test_config();
let service = V1::new(config);
let _agent = &service.agent;
let _schedule = &service.agent_schedule;
let _skill = &service.agent_skill;
let _skill_rule = &service.agent_skill_rule;
let _category = &service.category;
let _event = &service.event;
let _faq = &service.faq;
let _notification = &service.notification;
let _ticket = &service.ticket;
let _customized_field = &service.ticket_customized_field;
let _message = &service.ticket_message;
}
}