20 releases

new 0.3.2 Nov 29, 2021
0.3.1 Nov 27, 2021
0.2.13 Oct 27, 2021
0.2.11 Sep 5, 2021
0.1.5 Jul 13, 2021

#26 in Database implementations

Download history 76/week @ 2021-08-09 62/week @ 2021-08-16 25/week @ 2021-08-23 47/week @ 2021-08-30 11/week @ 2021-09-06 18/week @ 2021-09-13 18/week @ 2021-09-27 30/week @ 2021-10-04 19/week @ 2021-10-11 31/week @ 2021-10-18 45/week @ 2021-10-25 1/week @ 2021-11-01 21/week @ 2021-11-08 20/week @ 2021-11-15 40/week @ 2021-11-22

98 downloads per month

MIT license

300KB
7K SLoC

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

Akita - Mini orm for rust with SQLite & MySQL.

This create offers:

  • MySql database's helper in pure rust;
  • SQLite database's helper in pure rust;
  • A mini orm framework (With MySQL/SQLite)。

Features:

  • Other Database support, i.e. support Oracle, MSSQL...;
  • support of named parameters for custom condition;

You may be looking for:

Akita in action

Click to show Cargo.toml. Run this code in the playground.
[dependencies]

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

use akita::*;
use akita::prelude::*;

/// Annotion Support: Table、table_id、field (name, exist)
#[derive(Debug, FromAkita, ToAkita, Table, Clone)]
#[table(name="t_system_user")]
struct SystemUser {
    #[field = "name"]
    id: Option<i32>,
    #[table_id]
    username: String,
    /// ⚠️ When exist is set to false, the type must be defined as option
    #[field(name="ages", exist = "false")]
    age: i32,
}

fn main() {
    let db_url = String::from("mysql://root:password@localhost:3306/akita");
    let mut pool = Pool::new(AkitaConfig{ max_size: None, url: db_url, log_level: None }).unwrap();
    let mut em = pool.entity_manager().expect("must be ok");
    let mut wrap = UpdateWrapper::new();
    wrap.eq(true, "username", "'ussd'");
    match em.count::<SystemUser, UpdateWrapper>(&mut wrap) {
        Ok(res) => {
            println!("success count data!");
        }
        Err(err) => {
            println!("error:{:?}",err);
        }
    }
}

Feature.

  • akita-mysql - to use mysql
  • akita-sqlite - to use sqlite

Annotions.

  • Table - to make Akita work with structs
  • table_id - to make Table Ident
  • field - to make struct field with own database.
  • name - work with column, make the table's field name. default struct' field name.
  • exist - ignore struct's field with table. default true.

Support Field Types.

  • Option<T>
  • u8, u32, u64
  • i32, i64
  • usize
  • bool
  • f32, f64
  • str, String
  • serde_json::Value
  • NaiveDate, NaiveDateTime

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

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Akita by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~4–11MB
~234K SLoC