use elif_http_derive::module;
pub trait UserService: Send + Sync {
fn get_user(&self, id: u32) -> String;
}
pub trait EmailService: Send + Sync {
fn send_email(&self, to: &str, subject: &str) -> bool;
}
#[derive(Default)]
pub struct MockUserService;
#[derive(Default)]
pub struct SmtpEmailService;
#[derive(Default)]
pub struct UserController;
#[derive(Default)]
pub struct PostController;
impl UserService for MockUserService {
fn get_user(&self, id: u32) -> String {
format!("User {}", id)
}
}
impl EmailService for SmtpEmailService {
fn send_email(&self, to: &str, subject: &str) -> bool {
true
}
}
#[module(
providers: [MockUserService],
controllers: [UserController]
)]
pub struct BasicModule;
#[module(
providers: [
MockUserService,
SmtpEmailService
],
controllers: [UserController, PostController]
)]
pub struct MultipleProvidersModule;
#[module(
providers: [
SmtpEmailService
],
controllers: [UserController]
)]
pub struct SingleProviderModule;
#[module(
imports: [BasicModule],
providers: [SmtpEmailService],
exports: [SmtpEmailService]
)]
pub struct ImportExportModule;
fn main() {}