99% of base complete

This commit is contained in:
2025-02-11 19:59:00 +01:00
parent 6d08c39a6d
commit 4451a3cf3d
36 changed files with 867 additions and 5685 deletions

View File

@@ -0,0 +1,29 @@
use axum::Router;
use axum::routing::get;
use crate::base::controller::BaseController;
use super::model::User;
use super::service::UserService;
pub struct UserController {
base_controller: BaseController<User, UserService>,
}
impl UserController {
pub fn new(service: UserService) -> Self {
Self {
base_controller: BaseController::new(service),
}
}
pub fn routes() -> Router {
Router::new()
.route("/users", get(Self::get_users))
}
async fn get_users(
State(controller): State<Arc<UserController>>,
) -> impl IntoResponse {
controller.base_controller.get_all().await
}
}

4
src/routes/user/mod.rs Normal file
View File

@@ -0,0 +1,4 @@
pub mod model;
pub mod schema;
pub mod service;
pub mod controller;

18
src/routes/user/model.rs Normal file
View File

@@ -0,0 +1,18 @@
use diesel::prelude::*;
use serde::{Deserialize, Serialize};
use crate::base::entity::BaseEntity;
use super::schema::users;
#[derive(Debug, Clone, Serialize, Deserialize, Queryable, Identifiable)]
#[diesel(table_name = users)]
pub struct User {
pub id: i32,
pub name: String,
pub email: String,
}
impl BaseEntity for User {
fn id(&self) -> i32 {
self.id
}
}

View File

@@ -0,0 +1,7 @@
diesel::table! {
users (id) {
id -> Int4,
name -> Varchar,
email -> Varchar,
}
}

View File

@@ -0,0 +1,5 @@
use crate::base::service::BaseService;
use super::model::User;
use super::schema::users;
pub type UserService = BaseService<User, users::table>;