use crate::model::user::ActiveModel; use sea_orm::{ ActiveModelTrait, ActiveValue, ConnectionTrait, DbErr, DeriveIntoActiveModel, EntityTrait, IntoActiveModel, }; use serde::{Deserialize, Serialize}; use crate::model; #[derive(Debug, PartialEq, Clone, DeriveIntoActiveModel, Serialize, Deserialize)] pub struct NewUser { pub email: Option, pub name: String, pub password: String, } impl NewUser { pub async fn create(&self, db: &C) -> Result where C: ConnectionTrait, { let res = self.clone().into_active_model().insert(db).await?; Ok(res) } } pub async fn follow_company(db: &C, user_id: i32, company_id: i32) -> Result<(), DbErr> where C: ConnectionTrait, { let relation = model::user_company::ActiveModel { user_id: ActiveValue::Set(user_id), company_id: ActiveValue::Set(company_id), }; relation.insert(db).await?; Ok(()) } pub async fn unfollow_company(db: &C, user_id: i32, company_id: i32) -> Result<(), DbErr> where C: ConnectionTrait, { model::user_company::Entity::delete_by_id((user_id, company_id)) .exec(db) .await?; Ok(()) }