`
cywhoyi
  • 浏览: 421989 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Rust的MVC的微服务

阅读更多
#![feature(proc_macro_hygiene)]
#![feature(decl_macro)]

#[macro_use]
extern crate rocket;
use rocket_contrib::json::Json;

#[macro_use]
extern crate diesel;
extern crate dotenv;

mod controller;
mod domain;
mod dto;
mod repository;
mod schema;
mod service;

use controller::*;
use dto::*;
use repository::*;
use service::*;

#[post("/task/add", data = "<task>")]
fn task_add(task: Json<TaskDto>) {
    TaskController::new(TaskService::new(TaskRepository::new())).task_add(task);
}

fn main() {
    rocket::ignite().mount("/", routes![task_add]).launch();
}

 Controller mod.rs:

use crate::dto::*;
use crate::service::*;
use rocket_contrib::json::Json;

pub struct TaskController {
    service: TaskService,
}

impl TaskController {
    pub fn new(service: TaskService) -> TaskController {
        TaskController { service: service }
    }

    pub fn task_add(&self, task: Json<TaskDto>) {


        println!("task json format is {:?}",task);
        self.service.task_add(task.into_inner());
    }
}

 Service:

use crate::domain::*;
use crate::dto::*;
use crate::repository::*;
use chrono::{Utc, Local, DateTime, Date};

pub struct TaskService {
    repository: TaskRepository,
}

impl TaskService {
    pub fn new(repository: TaskRepository) -> TaskService {
        TaskService {
            repository: repository,
        }
    }

    pub fn task_add(&self, task: TaskDto) {
        let task2 = Task::new(task.get_name(), task.get_time_limit());


        println!("in service level is {:?}", task);
//        println!("in service level is {:?}",task2.ok());
        let local_date: Date<Local> = Local::today();




        let task_bak = Task { name: task.get_name().to_string(), time_limit: local_date };

        self.repository.task_add(task_bak);
    }
}

 Repo:

use crate::domain::*;
use crate::dto::*;
use crate::schema::task_models::dsl::*;
use diesel::pg::PgConnection;
use diesel::prelude::*;
use dotenv::dotenv;
use std::env;

pub struct TaskRepository {
    connection: PgConnection,
}

impl TaskRepository {
    pub fn new() -> TaskRepository {
        TaskRepository {
            connection: establish_connection(),
        }
    }

    pub fn task_add(&self, task: Task) {
        let _model = TaskModel::new(task);
        diesel::insert_into(task_models)
            .values(&_model)
            .execute(&self.connection)
            .expect("Error saving new task.");
    }
}

fn establish_connection() -> PgConnection {
    dotenv().ok();

    let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
    PgConnection::establish(&database_url).expect(&format!("Error connecting to {}", database_url))
}

 

1
1
分享到:
评论

相关推荐

    Rust微服务开发.zip

    本文将深入探讨“Rust微服务开发”的主题,基于提供的资源,我们将介绍Rust语言的基础,微服务的概念,以及如何利用Rust构建微服务,同时还会讨论Rust中的常用库及其应用。 首先,让我们理解什么是Rust。Rust是一种...

    Python-Fractalide简单的rust微服务架构

    Python-Fractalide是一个基于Rust语言构建的微服务架构框架,它提供了在Python环境中构建、部署和管理微服务的能力。Fractalide这个名字源自"fractal"(分形)的概念,暗示了其设计原则:模块化、自相似性和可扩展性...

    rust:for用于使用Rust创建开放式微服务的模板

    Rust的微服务模板 Rust的OMS模板。 用法 # Storyscript your_service message name : ' Peter ' # {"message": "Hello Peter"} 测试 &gt; oms run message -a name=Service :information: Building Docker image … :...

    rust-k8s-demo:云原生世界中的现代微服务演示

    这两个微服务都使用完全异步的Rust库,并且都基于 。 特征 微服务使用grpc互相交谈 使用skaffold进行本地开发人员设置 CI 入门 该仓库需要 。 $ git clone https://github.com/caulagi/rust-k8s-demo # make ...

    rust-ddd:有关使用rust的ddd体系结构的示例

    Rust是一种系统级编程语言,以其内存安全、并发性能和高速度而受到广泛赞誉。当我们将DDD与Rust结合时,我们可以构建出既符合业务需求又具有高性能的系统。 在"rust-ddd"项目中,我们可以看到如何在Rust环境中应用...

    Rust程序设计语言 Rust Programming Language

    《Rust程序设计语言》是官方的Rust编程语言教程,旨在帮助读者理解和掌握Rust语言的核心特性和最佳实践。这本书由Steve Klabnik和Carol Nichols撰写,并由Rust社区不断更新和完善。简体中文版是由Rust中文社区翻译的...

    Rust Rust Rust Rust Rust Rust

    Rust Rust Rust Rust Rust Rust

    新手 学Rust 开发 一些简单例子

    Rust 是一种系统编程语言,以其安全性、并发性和性能而闻名。它旨在提供内存安全,同时保持与 C 和 C++ 类似的性能。以下是一些 Rust 开发的入门步骤和简单例子。 环境搭建 安装 Rust:访问 Rust 官方网站 ...

    Rust 程序设计语言(基于 Rust 1.67.1)

    ### Rust 程序设计语言知识点解析 #### 核心概念与价值定位 - **赋能(Empowerment)**:Rust 旨在为程序员提供更广泛领域的编程支持,特别是那些传统上被认为复杂且容易出错的领域,比如系统级编程。通过消除常见...

    Rust 程序设计Rust 程序设计语言

    Rust是一种注重安全、并发和性能的系统编程语言,它的设计目标是在保持底层系统编程能力的同时,提供高级语言的安全性和生产效率。Rust的内存安全保证,无需垃圾收集器,是其吸引开发者的重要特性之一。通过Rust,...

    基于Rust开发的后台管理系统rust-admin-master.zip

    《深入探索Rust后台管理系统开发:rust-admin-master详解》 在现代软件开发中,选择一个高效、安全且具有强大性能的语言至关重要。Rust,作为Mozilla研发的系统级编程语言,以其内存安全、并发性以及高性能的特点,...

    rust-book-chinese.zip_Rust编程_rust_rust 中文手册_rust系统

    《Rust编程_rust中文手册_rust系统》是针对Rust编程语言的一份详尽教程,旨在帮助读者深入理解和掌握这门系统级编程语言。Rust由 Mozilla 研究院开发,以其强大的安全特性、高性能和并发能力而受到广泛关注。这份...

    大麦网演唱会抢票软件,一个基于 tauri + rust + vue 调用接口的抢票软件

    一个基于 tauri + rust + vue 构建的抢票软件,全部调用大麦的接口。目前只支持大麦平台(默认)。 ## 编译(需要 rust、node 环境): 1. 安装 rust `curl --proto '=...

    另一个用Rust编写的操作系统-Rust综述

    ### Rust在操作系统的应用 #### Redox OS:内存安全与高效能的新选择 - **核心概念**:Redox OS是一个采用Rust语言构建的全新类Unix操作系统,它着重于提高安全性、可靠性和性能。 - **架构特点**: - **微内核...

    Rust 程序设计语言 简体中文版.pdf

    "Rust 程序设计语言 简体中文版.pdf" 本书是 Rust 程序设计语言的简体中文译本,由 Rust 中文社区翻译。本书假设读者使用 Rust 1.62(2022-06-30 发布)或更新的版本。本书涵盖了 Rust 的基础知识,旨在帮助读者...

    Rust参考手册 中文版(带完整目录)

    《Rust参考手册》中文版是一本详尽的官方文档,涵盖了Rust编程语言的核心概念、语法和特性。这本手册是由rust-lang-cn社区基于官方英文版翻译而来,并且持续更新,确保与官网同步,为中文用户提供了方便的学习资源。...

    Rust程序设计语言 中文版(带完整目录)

    Rust 程序设计语言中文版 Rust是一种现代、安全、并发的系统级编程语言,旨在提供一种更好的方式来编写软件。 Rust的设计目标是提供一种既安全又高效的语言,能够满足系统级编程的需求。 语言特性 1. 安全性:...

    rust中文教程.pdf

    Rust是一种注重性能和安全的编程语言,由Mozilla研究院研发,其目的是解决C和C++这类传统系统编程语言中内存管理的难题,比如空指针解引用、数据竞争和无效引用等问题。Rust的核心特性之一是它的所有权模型...

    rs-mvc-example:使用Rust与Iron框架的MVC示例

    在本文中,我们将深入探讨如何使用Rust编程语言与Iron框架构建一个MVC(Model-View-Controller)应用程序。Rust是一种系统级编程语言,以其内存安全和高性能著称,而Iron则是用Rust构建Web应用程序的一个轻量级、可...

    Rust编程语言-Rust开发

    Rust编程语言这是Rust的主要源代码存储库。 它包含编译器,标准库和文档。 快速入门阅读本书中的“安装”。 从源代码安装注意:如果您希望对编译器有所帮助,则应阅读rustc-dev-guide的这一章而不是本节。 Rust构建...

Global site tag (gtag.js) - Google Analytics