aboutsummaryrefslogtreecommitdiff
path: root/src/db/models.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/models.rs')
-rw-r--r--src/db/models.rs94
1 files changed, 49 insertions, 45 deletions
diff --git a/src/db/models.rs b/src/db/models.rs
index c07a12a..7479fff 100644
--- a/src/db/models.rs
+++ b/src/db/models.rs
@@ -2,85 +2,73 @@ use chrono::naive::NaiveDateTime;
use diesel::prelude::*;
use super::schema::*;
-use super::AssociatedData;
use ::{Result, Error};
-#[derive(Insertable, Queryable, Identifiable, PartialEq, AsChangeset, Debug)]
-#[table_name="text_memes"]
-pub struct TextMeme {
+#[derive(Queryable, Identifiable, PartialEq, Debug)]
+#[table_name="memes"]
+pub struct Meme {
pub id: i32,
pub title: String,
- pub content: String,
+ pub content: Option<String>,
pub image_id: Option<i32>,
pub audio_id: Option<i32>,
pub metadata_id: i32,
}
-impl AssociatedData for TextMeme {
- type Associated = (Option<Image>, Option<Audio>);
-
- fn associated_data(&self, conn: &PgConnection) -> Result<Self::Associated> {
- let image = self.image_id.map(|x: i32| images::table.find(x).first(conn)).transpose()?;
- let audio = self.audio_id.map(|x: i32| audio::table.find(x).first(conn)).transpose()?;
+impl Meme {
+ pub fn image(&self, conn: &PgConnection) -> Option<Result<Image>> {
+ self.image_id.map(|x: i32| images::table.find(x).first(conn).map_err(Error::from))
+ }
- Ok((image, audio))
+ pub fn audio(&self, conn: &PgConnection) -> Option<Result<Audio>> {
+ self.audio_id.map(|x: i32| audio::table.find(x).first(conn).map_err(Error::from))
}
}
-
-#[derive(Insertable, Queryable, Identifiable, PartialEq, AsChangeset, Debug)]
-#[table_name="image_memes"]
-pub struct ImageMeme {
- pub id: i32,
+#[derive(Insertable, PartialEq, Debug)]
+#[table_name="memes"]
+pub struct NewMeme {
pub title: String,
- pub image_id: i32,
+ pub content: Option<String>,
+ pub image_id: Option<i32>,
+ pub audio_id: Option<i32>,
pub metadata_id: i32,
}
-impl AssociatedData for ImageMeme {
- type Associated = Image;
-
- fn associated_data(&self, conn: &PgConnection) -> Result<Self::Associated> {
- images::table.find(self.image_id).first(conn).map_err(Error::from)
- }
-}
-
-#[derive(Insertable, Queryable, Identifiable, PartialEq, AsChangeset, Debug)]
-#[table_name="audio_memes"]
-pub struct AudioMeme {
+#[derive(Queryable, Identifiable, PartialEq, Debug)]
+#[table_name="audio"]
+pub struct Audio {
pub id: i32,
- pub title: String,
- pub audio_id: i32,
+ pub data: Vec<u8>,
pub metadata_id: i32,
}
-impl AssociatedData for AudioMeme {
- type Associated = Audio;
-
- fn associated_data(&self, conn: &PgConnection) -> Result<Self::Associated> {
- audio::table.find(self.audio_id).first(conn).map_err(Error::from)
- }
+#[derive(Insertable, PartialEq, Debug)]
+#[table_name="audio"]
+pub struct NewAudio {
+ pub data: Vec<u8>,
+ pub metadata_id: i32,
}
-#[derive(Insertable, Queryable, Identifiable, PartialEq, AsChangeset, Debug)]
-#[table_name="audio"]
-pub struct Audio {
+#[derive(Queryable, Identifiable, PartialEq, Debug)]
+#[table_name="images"]
+pub struct Image {
pub id: i32,
pub data: Vec<u8>,
pub metadata_id: i32,
}
-#[derive(Insertable, Queryable, Identifiable, PartialEq, AsChangeset, Debug)]
+#[derive(Insertable, PartialEq, Debug)]
#[table_name="images"]
-pub struct Image {
- pub id: i32,
+pub struct NewImage {
pub data: Vec<u8>,
pub metadata_id: i32,
}
-#[derive(Insertable, Queryable, Identifiable, PartialEq, AsChangeset, Debug)]
+
+#[derive(Queryable, Identifiable, PartialEq, Debug)]
#[table_name="metadata"]
pub struct Metadata {
pub id: i32,
@@ -88,7 +76,15 @@ pub struct Metadata {
pub created_by: i64,
}
-#[derive(Insertable, Queryable, Identifiable, PartialEq, AsChangeset, Debug)]
+#[derive(Insertable, PartialEq, Debug)]
+#[table_name="metadata"]
+pub struct NewMetadata {
+ pub created: NaiveDateTime,
+ pub created_by: i64,
+}
+
+
+#[derive(Queryable, Identifiable, PartialEq, Debug)]
#[table_name="audit_records"]
pub struct AuditRecord {
pub id: i32,
@@ -96,3 +92,11 @@ pub struct AuditRecord {
pub updated_by: i64,
pub metadata_id: i32,
}
+
+#[derive(Insertable, PartialEq, Debug)]
+#[table_name="audit_records"]
+pub struct NewAuditRecord {
+ pub updated: NaiveDateTime,
+ pub updated_by: i64,
+ pub metadata_id: i32,
+}