reifydb-sub-task 0.4.11

Task execution subsystem for ReifyDB
Documentation
// SPDX-License-Identifier: Apache-2.0
// Copyright (c) 2025 ReifyDB

use std::sync::Arc;

use dashmap::DashMap;
use reifydb_core::interface::catalog::task::TaskId;
use reifydb_runtime::context::clock::Instant;

use crate::task::ScheduledTask;

/// Entry in the task registry tracking execution state
#[derive(Debug, Clone)]
pub struct TaskEntry {
	/// The task definition
	pub task: Arc<ScheduledTask>,
	/// When the task should next execute
	pub next_execution: Instant,
}

/// Thread-safe registry of scheduled tasks
pub type TaskRegistry = Arc<DashMap<TaskId, TaskEntry>>;

/// Information about a task for status queries
#[derive(Debug, Clone)]
pub struct TaskInfo {
	pub id: TaskId,
	pub name: String,
	pub next_execution: Instant,
}

impl TaskInfo {
	pub fn from_entry(id: TaskId, entry: &TaskEntry) -> Self {
		Self {
			id,
			name: entry.task.name.clone(),
			next_execution: entry.next_execution.clone(),
		}
	}
}