makes one database query work :)

This commit is contained in:
2019-06-19 15:26:27 +02:00
parent f589751f8c
commit 396989f3dd
6 changed files with 61 additions and 28 deletions

View File

@@ -6,7 +6,9 @@ edition = "2018"
[dependencies]
dotenv = "*"
serde = "*"
serde_derive = "*"
[dependencies.diesel]
version = "1.0"
features = ["sqlite"]
features = ["sqlite", "r2d2"]

Binary file not shown.

View File

@@ -1,14 +1,13 @@
#[macro_use]
extern crate diesel;
extern crate dotenv;
extern crate dotenv;
#[macro_use] extern crate diesel;
#[macro_use] extern crate serde_derive;
use diesel::prelude::*;
use dotenv::dotenv;
use std::env;
use diesel::r2d2::{self, ConnectionManager };
pub fn establish_connection() -> Result<SqliteConnection, String> {
dotenv().ok();
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set !");
dotenv::dotenv().ok();
let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set !");
SqliteConnection::establish(&database_url)
.map_err(|e| format!("Error connecting to {} : {:?}", database_url, e))
}
@@ -16,14 +15,28 @@ pub fn establish_connection() -> Result<SqliteConnection, String> {
pub mod models;
pub mod schema;
pub fn list_players() -> Vec<models::Player> {
pub fn list_players(conn: &SqliteConnection)
-> Result<Vec<models::Player>, diesel::result::Error> {
use schema::players::dsl::*;
let conn = establish_connection().unwrap();
players
.load::<models::Player>(&conn)
.expect("Error loading players")
Ok(players
.load::<models::Player>(conn)?)
}
pub type Pool = r2d2::Pool<ConnectionManager<SqliteConnection>>;
pub fn create_pool() -> Pool {
dotenv::dotenv().ok();
let connspec = std::env::var("DATABASE_URL").expect("DATABASE_URL");
let manager = ConnectionManager::<SqliteConnection>::new(connspec);
r2d2::Pool::builder()
.build(manager)
.expect("Failed to create pool.")
}
#[cfg(test)]
mod tests {
use super::*;

View File

@@ -1,7 +1,8 @@
use crate::serde_derive::{Serialize};
use crate::schema::players;
use crate::*;
#[derive(Queryable)]
#[derive(Debug, Queryable, Serialize)]
pub struct Player {
id: i32,
name: String,