mirror of https://github.com/rwf2/Rocket.git
Update docs and examples for diesel 1.0.0-rc1.
This commit is contained in:
parent
70413b155f
commit
401bedebb2
|
@ -9,10 +9,10 @@ rocket_codegen = { path = "../../codegen" }
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
serde_derive = "1.0"
|
serde_derive = "1.0"
|
||||||
r2d2 = "0.7"
|
r2d2 = "0.8"
|
||||||
diesel = { version = "0.16", features = ["sqlite"] }
|
diesel = { version = "1.0.0-rc1", features = ["sqlite"] }
|
||||||
diesel_codegen = { version = "0.16", features = ["sqlite"] }
|
diesel_derives = { version = "1.0.0-rc1", features = ["sqlite"] }
|
||||||
r2d2-diesel = "0.16"
|
r2d2-diesel = "1.0.0-rc1"
|
||||||
dotenv = "0.10.*" # workaround for broken dependencies
|
dotenv = "0.10.*" # workaround for broken dependencies
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
@ -2,4 +2,7 @@ CREATE TABLE tasks (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
description VARCHAR NOT NULL,
|
description VARCHAR NOT NULL,
|
||||||
completed BOOLEAN NOT NULL DEFAULT 0
|
completed BOOLEAN NOT NULL DEFAULT 0
|
||||||
)
|
);
|
||||||
|
|
||||||
|
INSERT INTO tasks (description) VALUES ("demo task");
|
||||||
|
INSERT INTO tasks (description) VALUES ("demo task2");
|
||||||
|
|
|
@ -10,12 +10,11 @@ use rocket::{Request, State, Outcome};
|
||||||
|
|
||||||
pub type Pool = r2d2::Pool<ConnectionManager<SqliteConnection>>;
|
pub type Pool = r2d2::Pool<ConnectionManager<SqliteConnection>>;
|
||||||
|
|
||||||
pub const DATABASE_FILE: &'static str = env!("DATABASE_URL");
|
pub const DATABASE_URL: &'static str = env!("DATABASE_URL");
|
||||||
|
|
||||||
pub fn init_pool() -> Pool {
|
pub fn init_pool() -> Pool {
|
||||||
let config = r2d2::Config::default();
|
let manager = ConnectionManager::<SqliteConnection>::new(DATABASE_URL);
|
||||||
let manager = ConnectionManager::<SqliteConnection>::new(DATABASE_FILE);
|
r2d2::Pool::new(manager).expect("db pool")
|
||||||
r2d2::Pool::new(config, manager).expect("db pool")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Conn(pub r2d2::PooledConnection<ConnectionManager<SqliteConnection>>);
|
pub struct Conn(pub r2d2::PooledConnection<ConnectionManager<SqliteConnection>>);
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
extern crate rocket;
|
extern crate rocket;
|
||||||
#[macro_use] extern crate diesel;
|
#[macro_use] extern crate diesel;
|
||||||
#[macro_use] extern crate diesel_codegen;
|
#[macro_use] extern crate diesel_derives;
|
||||||
#[macro_use] extern crate serde_derive;
|
#[macro_use] extern crate serde_derive;
|
||||||
extern crate rocket_contrib;
|
extern crate rocket_contrib;
|
||||||
extern crate r2d2;
|
extern crate r2d2;
|
||||||
|
|
|
@ -2,14 +2,20 @@ use diesel;
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use diesel::sqlite::SqliteConnection;
|
use diesel::sqlite::SqliteConnection;
|
||||||
|
|
||||||
|
mod schema {
|
||||||
|
table! {
|
||||||
|
tasks {
|
||||||
|
id -> Nullable<Integer>,
|
||||||
|
description -> Text,
|
||||||
|
completed -> Bool,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
use self::schema::tasks;
|
use self::schema::tasks;
|
||||||
use self::schema::tasks::dsl::{tasks as all_tasks, completed as task_completed};
|
use self::schema::tasks::dsl::{tasks as all_tasks, completed as task_completed};
|
||||||
|
|
||||||
mod schema {
|
#[table_name="tasks"]
|
||||||
infer_schema!("env:DATABASE_URL");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[table_name = "tasks"]
|
|
||||||
#[derive(Serialize, Queryable, Insertable, Debug, Clone)]
|
#[derive(Serialize, Queryable, Insertable, Debug, Clone)]
|
||||||
pub struct Task {
|
pub struct Task {
|
||||||
pub id: Option<i32>,
|
pub id: Option<i32>,
|
||||||
|
@ -29,7 +35,7 @@ impl Task {
|
||||||
|
|
||||||
pub fn insert(todo: Todo, conn: &SqliteConnection) -> bool {
|
pub fn insert(todo: Todo, conn: &SqliteConnection) -> bool {
|
||||||
let t = Task { id: None, description: todo.description, completed: false };
|
let t = Task { id: None, description: todo.description, completed: false };
|
||||||
diesel::insert(&t).into(tasks::table).execute(conn).is_ok()
|
diesel::insert_into(tasks::table).values(&t).execute(conn).is_ok()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn toggle_with_id(id: i32, conn: &SqliteConnection) -> bool {
|
pub fn toggle_with_id(id: i32, conn: &SqliteConnection) -> bool {
|
||||||
|
@ -47,4 +53,3 @@ impl Task {
|
||||||
diesel::delete(all_tasks.find(id)).execute(conn).is_ok()
|
diesel::delete(all_tasks.find(id)).execute(conn).is_ok()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ fn handler(conn: DbConn) { ... }
|
||||||
```
|
```
|
||||||
|
|
||||||
[`diesel`]: http://diesel.rs/
|
[`diesel`]: http://diesel.rs/
|
||||||
[`r2d2`]: https://docs.rs/r2d2/0.7.2/r2d2/
|
[`r2d2`]: https://docs.rs/r2d2/
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
|
@ -178,20 +178,17 @@ use the following dependencies:
|
||||||
```
|
```
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = "0.4.0-dev"
|
rocket = "0.4.0-dev"
|
||||||
diesel = { version = "*", features = ["sqlite"] }
|
diesel = { version = "1.0.0-rc1", features = ["sqlite"] }
|
||||||
diesel_codegen = { version = "*", features = ["sqlite"] }
|
r2d2-diesel = "1.0.0-rc1"
|
||||||
r2d2-diesel = "*"
|
r2d2 = "0.8"
|
||||||
r2d2 = "*"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Your `diesel` dependency information will differ. In particular, you should
|
Your `diesel` dependency information may differ. The crates are imported as
|
||||||
specify the latest versions of these libraries as opposed to using a `*`. The
|
well:
|
||||||
crates are imported as well:
|
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
extern crate rocket;
|
extern crate rocket;
|
||||||
#[macro_use] extern crate diesel;
|
#[macro_use] extern crate diesel;
|
||||||
#[macro_use] extern crate diesel_codegen;
|
|
||||||
extern crate r2d2_diesel;
|
extern crate r2d2_diesel;
|
||||||
extern crate r2d2;
|
extern crate r2d2;
|
||||||
```
|
```
|
||||||
|
@ -219,9 +216,8 @@ static DATABASE_URL: &'static str = env!("DATABASE_URL");
|
||||||
|
|
||||||
/// Initializes a database pool.
|
/// Initializes a database pool.
|
||||||
fn init_pool() -> Pool {
|
fn init_pool() -> Pool {
|
||||||
let config = r2d2::Config::default();
|
|
||||||
let manager = ConnectionManager::<SqliteConnection>::new(DATABASE_URL);
|
let manager = ConnectionManager::<SqliteConnection>::new(DATABASE_URL);
|
||||||
r2d2::Pool::new(config, manager).expect("db pool")
|
r2d2::Pool::new(manager).expect("db pool")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue