Skip to main content

reifydb_sub_admin/subsystem/
factory.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the AGPL-3.0-or-later, see license.md file
3
4use reifydb_core::ioc::IocContainer;
5use reifydb_engine::{StandardCommandTransaction, StandardEngine};
6use reifydb_sub_api::{Subsystem, SubsystemFactory};
7
8use super::AdminSubsystem;
9use crate::config::AdminConfig;
10
11pub struct AdminSubsystemFactory {
12	config: AdminConfig,
13}
14
15impl AdminSubsystemFactory {
16	pub fn new(config: AdminConfig) -> Self {
17		Self {
18			config,
19		}
20	}
21}
22
23impl SubsystemFactory<StandardCommandTransaction> for AdminSubsystemFactory {
24	fn create(self: Box<Self>, ioc: &IocContainer) -> reifydb_type::Result<Box<dyn Subsystem>> {
25		let engine = ioc.resolve::<StandardEngine>()?;
26		let subsystem = AdminSubsystem::new(self.config, engine);
27		Ok(Box::new(subsystem))
28	}
29}