pub mod attachment;
pub mod comment;
pub mod custom_field;
pub mod custom_field_option;
pub mod section;
pub mod task;
pub mod task_subtask;
pub mod tasklist;
pub mod tasklist_activity_subscription;
use crate::core::config::Config;
pub use attachment::AttachmentService;
pub use comment::CommentService;
pub use custom_field::CustomFieldService;
pub use custom_field_option::CustomFieldOptionService;
pub use section::SectionService;
pub use task::TaskService;
pub use task_subtask::TaskSubtaskService;
pub use tasklist::TasklistService;
pub use tasklist_activity_subscription::TasklistActivitySubscriptionService;
pub struct TaskV2Service {
pub task: TaskService,
pub task_subtask: TaskSubtaskService,
pub tasklist: TasklistService,
pub tasklist_activity_subscription: TasklistActivitySubscriptionService,
pub comment: CommentService,
pub attachment: AttachmentService,
pub section: SectionService,
pub custom_field: CustomFieldService,
pub custom_field_option: CustomFieldOptionService,
}
impl TaskV2Service {
pub fn new(config: Config) -> Self {
Self {
task: TaskService::new(config.clone()),
task_subtask: TaskSubtaskService::new(config.clone()),
tasklist: TasklistService::new(config.clone()),
tasklist_activity_subscription: TasklistActivitySubscriptionService::new(
config.clone(),
),
comment: CommentService::new(config.clone()),
attachment: AttachmentService::new(config.clone()),
section: SectionService::new(config.clone()),
custom_field: CustomFieldService::new(config.clone()),
custom_field_option: CustomFieldOptionService::new(config),
}
}
pub fn new_from_shared(shared: std::sync::Arc<Config>) -> Self {
Self {
task: TaskService::new(shared.as_ref().clone()),
task_subtask: TaskSubtaskService::new(shared.as_ref().clone()),
tasklist: TasklistService::new(shared.as_ref().clone()),
tasklist_activity_subscription: TasklistActivitySubscriptionService::new(
shared.as_ref().clone(),
),
comment: CommentService::new(shared.as_ref().clone()),
attachment: AttachmentService::new(shared.as_ref().clone()),
section: SectionService::new(shared.as_ref().clone()),
custom_field: CustomFieldService::new(shared.as_ref().clone()),
custom_field_option: CustomFieldOptionService::new(shared.as_ref().clone()),
}
}
}
#[cfg(test)]
#[allow(unused_variables, unused_unsafe)]
mod tests {
use super::*;
fn create_test_config() -> Config {
Config::default()
}
#[test]
fn test_task_v2_service_creation() {
let config = create_test_config();
let service = TaskV2Service::new(config);
}
#[test]
fn test_task_v2_service_structure() {
let config = create_test_config();
let service = TaskV2Service::new(config);
let _task = &service.task;
let _task_subtask = &service.task_subtask;
let _tasklist = &service.tasklist;
let _subscription = &service.tasklist_activity_subscription;
let _comment = &service.comment;
let _attachment = &service.attachment;
let _section = &service.section;
let _custom_field = &service.custom_field;
let _custom_field_option = &service.custom_field_option;
}
#[test]
fn test_task_v2_service_memory_safety() {
let config = create_test_config();
let service = TaskV2Service::new(config);
let _first_access = &service.task;
let _second_access = &service.task;
assert!(std::ptr::eq(_first_access, _second_access));
}
}