feat: create a model for tasks with subtasks

This commit is contained in:
Matouš Volf
2024-09-08 22:19:53 +02:00
parent 1479957916
commit b937d0bcb5
6 changed files with 91 additions and 7 deletions

View File

@ -7,7 +7,7 @@ use validator::Validate;
const TITLE_LENGTH_MIN: u64 = 1;
const TITLE_LENGTH_MAX: u64 = 255;
#[derive(Queryable, Selectable, Serialize, Deserialize, PartialEq, Clone, Debug)]
#[derive(Queryable, Selectable, Identifiable, Serialize, Deserialize, PartialEq, Clone, Debug)]
#[diesel(table_name = crate::schema::projects)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct Project {

View File

@ -1,5 +1,6 @@
use chrono::NaiveDateTime;
use crate::models::task::Task;
use crate::schema::subtasks;
use chrono::NaiveDateTime;
use diesel::prelude::*;
use serde::{Deserialize, Serialize};
use validator::Validate;
@ -7,7 +8,9 @@ use validator::Validate;
const TITLE_LENGTH_MIN: u64 = 1;
const TITLE_LENGTH_MAX: u64 = 255;
#[derive(Queryable, Selectable, Serialize, Deserialize, PartialEq, Clone, Debug)]
#[derive(Queryable, Selectable, Identifiable, Associations, Serialize, Deserialize, PartialEq,
Clone, Debug)]
#[diesel(belongs_to(Task, foreign_key = task_id))]
#[diesel(table_name = subtasks)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct Subtask {

View File

@ -4,11 +4,12 @@ use crate::schema::tasks;
use diesel::prelude::*;
use serde::{Deserialize, Serialize};
use validator::Validate;
use crate::models::subtask::Subtask;
const TITLE_LENGTH_MIN: u64 = 1;
const TITLE_LENGTH_MAX: u64 = 255;
#[derive(Queryable, Selectable, Serialize, Deserialize, PartialEq, Clone, Debug)]
#[derive(Queryable, Selectable, Identifiable, Serialize, Deserialize, PartialEq, Clone, Debug)]
#[diesel(table_name = tasks)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct Task {
@ -51,6 +52,26 @@ impl Task {
}
}
#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
pub struct TaskWithSubtasks {
task: Task,
subtasks: Vec<Subtask>,
}
impl TaskWithSubtasks {
pub fn new(task: Task, subtasks: Vec<Subtask>) -> Self {
Self { task, subtasks }
}
pub fn task(&self) -> &Task {
&self.task
}
pub fn subtasks(&self) -> &Vec<Subtask> {
&self.subtasks
}
}
#[derive(Insertable, Serialize, Deserialize, Validate, Clone, Debug)]
#[diesel(table_name = tasks)]
pub struct NewTask {