aboutsummaryrefslogtreecommitdiffstats
path: root/rust/src
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/bin/show_creators.rs24
-rw-r--r--rust/src/lib.rs18
-rw-r--r--rust/src/schema.rs68
3 files changed, 110 insertions, 0 deletions
diff --git a/rust/src/bin/show_creators.rs b/rust/src/bin/show_creators.rs
new file mode 100644
index 00000000..160ca3c7
--- /dev/null
+++ b/rust/src/bin/show_creators.rs
@@ -0,0 +1,24 @@
+
+extern crate fc;
+extern crate diesel;
+
+use self::fatcat_rs::*;
+use self::models::*;
+use self::diesel::prelude::*;
+
+fn main() {
+ use diesel_demo::schema::creators::dsl::*;
+
+ let connection = establish_connection();
+ let results = creators.filter(published.eq(true))
+ .limit(5)
+ .load::<CreatorRev>(&connection)
+ .expect("Error loading creators");
+
+ println!("Displaying {} creators", results.len());
+ for creator in results {
+ println!("{}", creator.title);
+ println!("----------\n");
+ println!("{}", creator.body);
+ }
+}
diff --git a/rust/src/lib.rs b/rust/src/lib.rs
new file mode 100644
index 00000000..679b9ed3
--- /dev/null
+++ b/rust/src/lib.rs
@@ -0,0 +1,18 @@
+
+#[macro_use]
+extern crate diesel;
+extern crate dotenv;
+
+use diesel::prelude::*;
+use diesel::pg::PgConnection;
+use dotenv::dotenv;
+use std::env;
+
+pub fn establish_connection() -> PgConnection {
+ dotenv().ok();
+
+ let database_url = env::var("DATABASE_URL")
+ .expect("DATABASE_URL must be set");
+ PgConnection::establish(&database_url)
+ .expect(&format!("Error connecting to {}", database_url))
+}
diff --git a/rust/src/schema.rs b/rust/src/schema.rs
new file mode 100644
index 00000000..7bef7dcd
--- /dev/null
+++ b/rust/src/schema.rs
@@ -0,0 +1,68 @@
+table! {
+ changelog (id) {
+ id -> Int8,
+ editgroup_id -> Int8,
+ timestamp -> Nullable<Timestamp>,
+ }
+}
+
+table! {
+ creator_edit (id) {
+ id -> Int8,
+ extra_json -> Nullable<Json>,
+ ident_id -> Uuid,
+ rev_id -> Nullable<Int8>,
+ redirect_id -> Nullable<Uuid>,
+ editgroup_id -> Int8,
+ }
+}
+
+table! {
+ creator_ident (id) {
+ id -> Uuid,
+ is_live -> Bool,
+ rev_id -> Nullable<Int8>,
+ redirect_id -> Nullable<Uuid>,
+ }
+}
+
+table! {
+ creator_rev (id) {
+ id -> Int8,
+ extra_json -> Nullable<Json>,
+ name -> Nullable<Text>,
+ orcid -> Nullable<Text>,
+ }
+}
+
+table! {
+ editgroup (id) {
+ id -> Int8,
+ extra_json -> Nullable<Json>,
+ editor_id -> Int8,
+ description -> Nullable<Text>,
+ }
+}
+
+table! {
+ editor (id) {
+ id -> Int8,
+ username -> Text,
+ is_admin -> Bool,
+ active_editgroup_id -> Nullable<Int8>,
+ }
+}
+
+joinable!(changelog -> editgroup (editgroup_id));
+joinable!(creator_edit -> creator_rev (rev_id));
+joinable!(creator_edit -> editgroup (editgroup_id));
+joinable!(creator_ident -> creator_rev (rev_id));
+
+allow_tables_to_appear_in_same_query!(
+ changelog,
+ creator_edit,
+ creator_ident,
+ creator_rev,
+ editgroup,
+ editor,
+);