akita 0.1.2

Akita.Mini Database Helper For MySQL.
Documentation
akita-0.1.2 has been yanked.

Akita   Build Status Latest Version akita: rustc 1.13+ akita_derive: rustc 1.31+

Akita is a mini framework for MySQL.


You may be looking for:

Akita in action

[dependencies]

# The core APIs, including the Table traits. Always
# required when using Akita. using #[derive(Table)] 
# to make Akita work with structs and enums defined in your crate.
akita = { version = "1.0", features = ["derive"] }

use akita::prelude::*;
use mysql::{Opts, OptsBuilder, Transaction, TxOpts};
use r2d2::Pool;

/// Annotion Support: Table、Id、column
#[derive(Table, Clone)]
#[table(name = "t_system_user")]
pub struct User {
    #[id(name="id")]
    pub pk: i64,
    pub id: String,
    pub name: String,
    pub headline: String,
    pub avatar_url: String,
    pub gender: i32,
    pub is_org: bool, 
    #[column(name="token")]
    pub url_token: String,
    pub user_type: String,
}

fn main() {
    // use r2d2 pool
    let opts = Opts::from_url("mysql://root:127.0.0.1:3306/test").expect("database url is empty.");
    let pool = Pool::builder().max_size(4).build(MysqlConnectionManager::new(OptsBuilder::from_opts(opts))).unwrap();
    let mut conn = pool.get().unwrap();
 
    /// build the wrapper.
    let mut wrapper = UpdateWrapper::new()
        .like(true, "username", "ffff");
        .eq(true, "username", 12);
        .eq(true, "username", "3333");
        .in_(true, "username", vec![1,44,3]);
        .not_between(true, "username", 2, 8);
        .set(true, "username", 4);
    
    let user = User{
        id: 2,
        username: "username".to_string(),
        mobile: "mobile".to_string(),
        password: "password".to_string()
    };
    let mut conn = ConnMut::Pooled(&mut conn);
    // Transaction
    conn.start_transaction(TxOpts::default()).map(|mut transaction| {
        match user.update( & mut wrapper, &mut ConnMut::TxMut(&mut transaction)) {
            Ok(res) => {}
            Err(err) => {
                println!("error : {:?}", err);
            }
        }
    });
    
    /// update by identify
    match user.update_by_id(&mut conn) {
        Ok(res) => {}
        Err(err) => {
            println!("error : {:?}", err);
        }
    }
    
    /// delete by identify
    match user.delete_by_id(&mut conn) {
        Ok(res) => {}
        Err(err) => {
            println!("error : {:?}", err);
        }
    }
    
    /// delete by condition
    match user.delete:: < UpdateWrapper > ( & mut wrapper, &mut conn) {
        Ok(res) => {}
        Err(err) => {
            println!("error : {:?}", err);
        }
    }
    
    /// insert data
    match user.insert(&mut conn) {
        Ok(res) => {}
        Err(err) => {
            println!("error : {:?}", err);
        }
    }
    
    /// find by identify
    match user.find_by_id(&mut conn) {
        Ok(res) => {}
        Err(err) => {
            println!("error : {:?}", err);
        }
    }
    
    
    /// find one by condition
    match user.find_one::<UpdateWrapper>(&mut wrapper, &mut conn) {
        Ok(res) => {}
        Err(err) => {
            println!("error : {:?}", err);
        }
    }
    
    /// find page by condition
    match user.page::<UpdateWrapper>(1, 10,&mut wrapper, &mut conn) {
        Ok(res) => {}
        Err(err) => {
            println!("error : {:?}", err);
        }
    }
}

Developing

To setup the development envrionment run cargo run.

Contributers

MrPan <1049058427@qq.com>

Getting help

Akita is a personal project. At the beginning, I just like Akita dog because of my hobbies. I hope this project will grow more and more lovely. Many practical database functions will be added in the future. I hope you can actively help this project grow and put forward suggestions. I believe the future will be better and better.

License