diff --git a/model/sqlite3/Cargo.toml b/model/sqlite3/Cargo.toml index fb06ea9..1e547d5 100644 --- a/model/sqlite3/Cargo.toml +++ b/model/sqlite3/Cargo.toml @@ -7,4 +7,7 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +chrono = { features = ["serde"] } diesel = { version = "*", features = ["sqlite"] } +serde = { version = "1.0" , features = ["derive"]} +# serde_json = "1.0" \ No newline at end of file diff --git a/model/sqlite3/src/db/models.rs b/model/sqlite3/src/db/models.rs index 34c23a5..7b6ed62 100644 --- a/model/sqlite3/src/db/models.rs +++ b/model/sqlite3/src/db/models.rs @@ -1,19 +1,20 @@ -use super::schema::*; +use chrono::{DateTime, Utc}; +use serde::Serialize; #[derive(Serialize, Queryable)] pub struct User { - id: i64, - nickname: String, - pronouns: String, - address_1_name: String, - address_2_additional: String, - address_4_street: String, - adress_house_number: String, - adress_city_code: String, - adress_country: String, - Ehrenaemter: String, - gravatar_email: String, - Freitext: String, + pub id: Option, + pub nickname: Option, + pub pronouns: Option, + pub address_1_name: Option, + pub address_2_additional: Option, + pub address_4_street: Option, + pub adress_house_number: Option, + pub adress_city_code: Option, + pub adress_country: Option, + pub ehrenaemter: Option, + pub gravatar_email: Option, + pub freitext: Option, } #[derive(Serialize, Queryable)] @@ -30,11 +31,11 @@ pub struct UserLanguage { user_id: i64, language_id: i64, - level: i64, + level: i32, } #[derive(Serialize, Queryable)] -pub struct skill { +pub struct Skill { id: i64, name: String, } @@ -44,8 +45,8 @@ pub struct UserExperience { id: i64, user_id: i64, description: String, - start: Date, - end: Date, + start: DateTime, + end: DateTime, } #[derive(Serialize, Queryable)] @@ -70,13 +71,13 @@ pub struct Topic { } #[derive(Serialize, Queryable)] -pub struct language { +pub struct Language { id: i64, name: String, } #[derive(Serialize, Queryable)] -pub struct experience { +pub struct Experience { id: i64, name: String, } diff --git a/model/sqlite3/src/db/schema.rs b/model/sqlite3/src/db/schema.rs index f5de5e0..860c6cd 100644 --- a/model/sqlite3/src/db/schema.rs +++ b/model/sqlite3/src/db/schema.rs @@ -1,51 +1,51 @@ table! { contact_types (id) { - id -> Nullable, + id -> Nullable, name -> Nullable, } } table! { experiences (id) { - id -> Nullable, + id -> Nullable, name -> Nullable, } } table! { languages (id) { - id -> Nullable, + id -> Nullable, name -> Nullable, } } table! { skills (id) { - id -> Nullable, + id -> Nullable, name -> Nullable, } } table! { topics (id) { - id -> Nullable, + id -> Nullable, name -> Nullable, } } table! { user_contacts (id) { - id -> Nullable, - user_id -> Integer, - contact_type_id -> Integer, + id -> Nullable, + user_id -> BigInt, + contact_type_id -> BigInt, content_ -> Nullable, } } table! { user_experiences (id) { - id -> Nullable, - user_id -> Integer, + id -> Nullable, + user_id -> BigInt, description -> Nullable, start -> Nullable, end -> Nullable, @@ -54,33 +54,33 @@ table! { table! { user_languages (id) { - id -> Nullable, - user_id -> Integer, - language_id -> Integer, + id -> Nullable, + user_id -> BigInt, + language_id -> BigInt, level -> Nullable, } } table! { user_search_topics (id) { - id -> Nullable, - user_id -> Integer, - topic_id -> Integer, + id -> Nullable, + user_id -> BigInt, + topic_id -> BigInt, } } table! { user_skills (id) { - id -> Nullable, - user_id -> Integer, - skill_id -> Nullable, + id -> Nullable, + user_id -> BigInt, + skill_id -> Nullable, level -> Nullable, } } table! { users (id) { - id -> Nullable, + id -> Nullable, nickname -> Nullable, pronouns -> Nullable, address_1_name -> Nullable, diff --git a/model/sqlite3/src/lib.rs b/model/sqlite3/src/lib.rs index d58d631..2d9c408 100644 --- a/model/sqlite3/src/lib.rs +++ b/model/sqlite3/src/lib.rs @@ -1,9 +1,16 @@ +extern crate chrono; +#[macro_use] extern crate diesel; +extern crate serde; pub mod db; #[cfg(test)] mod tests { + use crate::db::models::User; + use crate::db::schema::users::dsl::*; + + use diesel::prelude::*; use diesel::Connection; use diesel::SqliteConnection; @@ -13,17 +20,16 @@ mod tests { .unwrap_or_else(|_| panic!("Error connecting to {}", database_url)) } - #[test] - fn it_works() { - assert_eq!(2 + 2, 4); - } - #[test] fn list_users() { - use schema::dsl::*; let connection = establish_connection(); - // db::schema:: + let all_users = users + .load::(&connection) + .expect("Error loading users"); - // users.loa + println!("Displaying {} users", all_users.len()); + for user in all_users { + println!("{:?}", user.nickname.unwrap()); + } } }