as_core 0.1.0

aspiesolutions core crate
Documentation
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3

#[cfg(feature="sea-orm")]
use sea_orm::entity::prelude::*;


#[cfg_attr(feature="sea-orm",derive(DeriveEntityModel))]
#[cfg_attr(feature="serde",derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature="sea-orm",sea_orm(table_name = "bills"))]
pub struct Model {
    #[cfg_attr(feature="sea-orm",sea_orm(primary_key))]
    pub id: i64,
    pub user_id: i64,
    pub budget: rust_decimal::Decimal,
    #[cfg_attr(feature="sea-orm",sea_orm(column_type = "Text"))]
    pub description: String,
    pub due: chrono::DateTime<chrono::FixedOffset>,
    pub actual: rust_decimal::Decimal,
    pub repeat_interval: Option<RepeatInteval>,
    pub repeat_interval_value:Option<i32>,
    pub is_paid: bool,
}

#[cfg_attr(feature="serde",derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature="sea-orm",derive(EnumIter, DeriveActiveEnum))]
#[cfg_attr(feature="sea-orm", derive(clap::ValueEnum))]

#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature="sea-orm",sea_orm(rs_type = "String", db_type = "Enum", enum_name = "repeat_interval"))]
pub enum RepeatInteval {
    #[cfg_attr(feature="sea-orm",sea_orm(string_value = "days"))]
    Days,
    // every N months on day of month starting at date
    #[cfg_attr(feature="sea-orm",sea_orm(string_value = "weeks"))]
    Weeks,
    #[cfg_attr(feature="sea-orm",sea_orm(string_value = "months"))]
    Months,
    // every N weeks on day of week starting at date
    #[cfg_attr(feature="sea-orm",sea_orm(string_value = "years"))]
    Years,
}




#[cfg_attr(feature="serde",derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature="sea-orm", derive(clap::Args))]
#[derive(Clone, Debug, PartialEq, Eq)]

pub struct CreateBillOptions {
    #[cfg_attr(feature="clap",arg(long))]
    pub user_id: i64,
    #[cfg_attr(feature="clap",arg(long))]
    pub budget: rust_decimal::Decimal,
    #[cfg_attr(feature="clap",arg(long))]
    pub description: String,
    #[cfg_attr(feature="clap",arg(long))]
    pub due: chrono::DateTime<chrono::FixedOffset>,
    #[cfg_attr(feature="clap",arg(long))]
    pub actual: rust_decimal::Decimal,
    #[cfg_attr(feature="clap",arg(long))]
    pub is_paid: bool,
    #[cfg_attr(feature="clap",arg(long))]
    pub id: Option<i64>,
    #[cfg_attr(feature="clap",arg(long))]
    pub repeat_interval: Option<RepeatInteval>,
    #[cfg_attr(feature="clap",arg(long))]
    pub repeat_interval_value: Option<i32>,
}


#[cfg(feature="sea-orm")]
pub async fn create(conn: &sea_orm::DatabaseConnection,opts: &CreateBillOptions) -> Result<Model,anyhow::Error> {
    let user = crate::user::get_by_id(&conn, opts.user_id).await?.ok_or_else(||anyhow::anyhow!("Could not find a user with user id of {}",opts.user_id))?;
    let mut active_model: ActiveModel = <ActiveModel as sea_orm::ActiveModelTrait>::default();
    if let Some(id) = opts.id {
        active_model.id = sea_orm::ActiveValue::set(id)
    }
    active_model.user_id = sea_orm::ActiveValue::set(user.id);
    active_model.budget = sea_orm::ActiveValue::Set(opts.budget);
    active_model.description = sea_orm::ActiveValue::Set(opts.description.clone());
    active_model.due = sea_orm::ActiveValue::Set(opts.due);
    active_model.actual = sea_orm::ActiveValue::Set(opts.actual);
    active_model.repeat_interval = sea_orm::ActiveValue::Set(opts.repeat_interval.clone());
    active_model.repeat_interval_value = sea_orm::ActiveValue::Set(opts.repeat_interval_value.clone());
    active_model.is_paid = sea_orm::ActiveValue::Set(opts.is_paid);
    Ok(Model::try_from(active_model.save(conn).await?)?)
}



#[cfg(feature="sea-orm")]
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
#[cfg(feature="sea-orm")]
impl ActiveModelBehavior for ActiveModel {}