use diesel::{ dsl::{auto_type, AsSelect}, pg::Pg, prelude::*, }; use uuid::Uuid; use crate::{schema::projects, teams::Team}; #[derive(Associations, Clone, Debug, Identifiable, Insertable, Queryable, Selectable)] #[diesel(table_name = projects)] #[diesel(belongs_to(Team))] pub struct Project { pub id: Uuid, pub team_id: Uuid, pub name: String, } impl Project { #[auto_type(no_type_alias)] pub fn all() -> _ { let select: AsSelect = Project::as_select(); 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) } }