Create Tag tables and Add Tag endpoint

This commit is contained in:
Cameron Cordes
2021-09-03 19:34:38 -04:00
parent 2d6db6d059
commit 8939ffbaf5
7 changed files with 155 additions and 5 deletions

View File

@@ -9,7 +9,7 @@ use std::{
use crate::database::models::{Favorite, InsertFavorite, InsertUser, User};
pub mod models;
mod schema;
pub mod schema;
pub trait UserDao {
fn create_user(&self, user: &str, password: &str) -> Option<User>;
@@ -81,7 +81,7 @@ impl UserDao for SqliteUserDao {
}
}
fn connect() -> SqliteConnection {
pub fn connect() -> SqliteConnection {
let db_url = dotenv::var("DATABASE_URL").expect("DATABASE_URL must be set");
SqliteConnection::establish(&db_url).expect("Error connecting to DB")
}

View File

@@ -1,4 +1,4 @@
use crate::database::schema::{favorites, users};
use crate::database::schema::{favorites, tagged_photo, tags, users};
use serde::Serialize;
#[derive(Insertable)]
@@ -29,3 +29,29 @@ pub struct Favorite {
pub userid: i32,
pub path: String,
}
#[derive(Serialize, Queryable, Clone, Debug)]
pub struct Tag {
pub id: i32,
pub name: String,
}
#[derive(Insertable, Clone, Debug)]
#[table_name = "tags"]
pub struct InsertTag {
pub name: String,
}
#[derive(Insertable, Clone, Debug)]
#[table_name = "tagged_photo"]
pub struct InsertTaggedPhoto {
pub tag_id: i32,
pub photo_name: String,
}
#[derive(Queryable, Clone, Debug)]
pub struct TaggedPhoto {
pub id: i32,
pub photo_name: String,
pub tag_id: i32,
}

View File

@@ -6,6 +6,21 @@ table! {
}
}
table! {
tagged_photo (id) {
id -> Integer,
photo_name -> Text,
tag_id -> Integer,
}
}
table! {
tags (id) {
id -> Integer,
name -> Text,
}
}
table! {
users (id) {
id -> Integer,
@@ -14,4 +29,11 @@ table! {
}
}
allow_tables_to_appear_in_same_query!(favorites, users,);
joinable!(tagged_photo -> tags (tag_id));
allow_tables_to_appear_in_same_query!(
favorites,
tagged_photo,
tags,
users,
);