slave 0.13.1

CLI for slave, a Laravel-inspired Rust framework for MCP-first apps: scaffold an MCP backend with auth, roles, teams and SurrealDB migrations, add server-rendered web apps, and route them by domain or path
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

use crate::modules::user::models::user::User;

/// Arguments of tools that act on one user.
#[derive(Debug, Deserialize, JsonSchema)]
pub struct UserIdRequest {
    pub user_id: i64,
}

/// Public representation of a user.
#[derive(Debug, Serialize, JsonSchema)]
pub struct UserResponse {
    pub id: i64,
    pub name: String,
    pub email: Option<String>,
    /// RFC 3339, in UTC.
    pub created_at: String,
}

/// Result of `user_list`.
#[derive(Debug, Serialize, JsonSchema)]
pub struct UserListResponse {
    pub users: Vec<UserResponse>,
}

/// Result of `user_delete`.
#[derive(Debug, Serialize, JsonSchema)]
pub struct DeletedUserResponse {
    pub deleted: bool,
    pub id: i64,
}

impl From<User> for UserResponse {
    fn from(user: User) -> Self {
        Self {
            id: user.id,
            name: user.name,
            email: user.email,
            created_at: user.created_at.to_string(),
        }
    }
}