Skip to main content

folk_plugin_jobs/
lib.rs

1pub mod config;
2pub mod driver;
3pub mod plugin;
4pub mod redis_driver;
5
6use anyhow::Result;
7use folk_api::{Plugin, PluginFactory, ServerPluginWrapper};
8use serde_json::Value;
9
10pub use config::JobsConfig;
11pub use driver::{Driver, MemoryDriver};
12pub use plugin::JobsPlugin;
13pub use redis_driver::RedisDriver;
14
15struct JobsPluginFactory;
16
17impl PluginFactory for JobsPluginFactory {
18    fn create(&self, config: Value) -> Result<Box<dyn Plugin>> {
19        let config: JobsConfig = serde_json::from_value(config)?;
20        Ok(Box::new(ServerPluginWrapper::new(JobsPlugin::new(config))))
21    }
22}
23
24pub fn folk_plugin_factory() -> Box<dyn PluginFactory> {
25    Box::new(JobsPluginFactory)
26}