shoutdotdev/src/projects.rs

36 lines
791 B
Rust
Raw Normal View History

2025-02-26 13:10:48 -08:00
use diesel::{
dsl::{auto_type, AsSelect},
pg::Pg,
prelude::*,
};
2025-02-26 13:10:50 -08:00
use uuid::Uuid;
2025-02-26 13:10:47 -08:00
use crate::{schema::projects, teams::Team};
2025-02-26 13:10:50 -08:00
#[derive(Associations, Clone, Debug, Identifiable, Insertable, Queryable, Selectable)]
2025-02-26 13:10:47 -08:00
#[diesel(table_name = projects)]
2025-02-26 13:10:50 -08:00
#[diesel(belongs_to(Team))]
pub struct Project {
pub id: Uuid,
pub team_id: Uuid,
pub name: String,
}
2025-02-26 13:10:48 -08:00
impl Project {
#[auto_type(no_type_alias)]
pub fn all() -> _ {
let select: AsSelect<Project, Pg> = Project::as_select();
2025-02-26 13:10:47 -08:00
projects::table.select(select)
}
#[auto_type(no_type_alias)]
pub fn with_team(team_id: Uuid) -> _ {
projects::team_id.eq(team_id)
}
#[auto_type(no_type_alias)]
pub fn with_name(name: String) -> _ {
projects::name.eq(name)
2025-02-26 13:10:48 -08:00
}
}