Files
CookAssistant/cookbook/src/models.rs
2019-01-30 14:21:37 +01:00

53 lines
1.1 KiB
Rust

use super::schema::recipes;
use super::schema::ingredients;
use super::diesel::prelude::*;
#[derive(Debug, Clone, Queryable)]
pub struct Recipe {
pub id: i32,
pub title: String,
pub category: i32,
pub ingredients: String,
pub preparation: String,
}
#[derive(Insertable)]
#[table_name="recipes"]
pub struct NewRecipe<'a> {
pub title: &'a str,
pub category: i32,
pub ingredients: &'a str,
pub preparation: &'a str,
}
impl<'a> NewRecipe<'a> {
pub fn new(title: &'a str, category: i32, ingredients: &'a str, preparation: &'a str) -> Self {
NewRecipe{
title,
category,
ingredients,
preparation,
}
}
pub fn insert(self, conn: &SqliteConnection) -> Result<Self, String> {
diesel::insert_into(recipes::table)
.values(&self)
.execute(conn)
.expect("Error inserting recipe");
Ok(self)
}
}
#[derive(Queryable)]
pub struct Ingredient {
pub id: i32,
pub alias: String,
}
#[derive(Insertable)]
#[table_name="ingredients"]
pub struct NewIngredient<'a> {
pub alias: &'a str,
}