Basic rest implementation for connecting user to sales-person
This commit is contained in:
parent
e3ec694876
commit
bf94ec33de
10 changed files with 181 additions and 1 deletions
|
|
@ -91,6 +91,18 @@ impl dao::PermissionDao for PermissionDaoImpl {
|
|||
.map_db_error()?;
|
||||
Ok(())
|
||||
}
|
||||
async fn find_user(&self, username: &str) -> Result<Option<dao::UserEntity>, DaoError> {
|
||||
let result = query!(
|
||||
r"SELECT name FROM user WHERE name = ?",
|
||||
username
|
||||
)
|
||||
.fetch_optional(self.pool.as_ref())
|
||||
.await
|
||||
.map_db_error()?;
|
||||
Ok(result.map(|row| dao::UserEntity {
|
||||
name: row.name.clone().into(),
|
||||
}))
|
||||
}
|
||||
|
||||
async fn create_role(&self, role: &dao::RoleEntity, process: &str) -> Result<(), DaoError> {
|
||||
let name = role.name.as_ref();
|
||||
|
|
|
|||
|
|
@ -72,6 +72,21 @@ impl SalesPersonDao for SalesPersonDaoImpl {
|
|||
.map(SalesPersonEntity::try_from)
|
||||
.transpose()?)
|
||||
}
|
||||
|
||||
async fn find_by_user(&self, user_id: &str) -> Result<Option<SalesPersonEntity>, DaoError> {
|
||||
Ok(query_as!(
|
||||
SalesPersonDb,
|
||||
"SELECT sp.id, sp.name, sp.inactive, sp.deleted, sp.update_version FROM sales_person sp JOIN sales_person_user spu ON sp.id = spu.sales_person_id WHERE spu.user_id = ?",
|
||||
user_id
|
||||
)
|
||||
.fetch_optional(self.pool.as_ref())
|
||||
.await
|
||||
.map_db_error()?
|
||||
.as_ref()
|
||||
.map(SalesPersonEntity::try_from)
|
||||
.transpose()?)
|
||||
}
|
||||
|
||||
async fn create(&self, entity: &SalesPersonEntity, process: &str) -> Result<(), DaoError> {
|
||||
let id = entity.id.as_bytes().to_vec();
|
||||
let version = entity.version.as_bytes().to_vec();
|
||||
|
|
@ -96,4 +111,34 @@ impl SalesPersonDao for SalesPersonDaoImpl {
|
|||
.map_db_error()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn assign_to_user(&self, sales_person_id: Uuid, user_id: &str, process: &str) -> Result<(), DaoError> {
|
||||
let sales_person_id = sales_person_id.as_bytes().to_vec();
|
||||
query!("INSERT INTO sales_person_user (user_id, sales_person_id, update_process) VALUES (?, ?, ?)", user_id, sales_person_id, process)
|
||||
.execute(self.pool.as_ref())
|
||||
.await
|
||||
.map_db_error()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn discard_assigned_user(&self, sales_person_id: Uuid) -> Result<(), DaoError> {
|
||||
let sales_person_id = sales_person_id.as_bytes().to_vec();
|
||||
query!("DELETE FROM sales_person_user WHERE sales_person_id = ?", sales_person_id)
|
||||
.execute(self.pool.as_ref())
|
||||
.await
|
||||
.map_db_error()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn get_assigned_user(&self, sales_person_id: Uuid) -> Result<Option<Arc<str>>, DaoError> {
|
||||
let sales_person_id = sales_person_id.as_bytes().to_vec();
|
||||
Ok(query!(
|
||||
"SELECT user_id FROM sales_person_user WHERE sales_person_id = ?",
|
||||
sales_person_id
|
||||
)
|
||||
.fetch_optional(self.pool.as_ref())
|
||||
.await
|
||||
.map_db_error()?
|
||||
.map(|result| result.user_id.into()))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue