46 lines
1.2 KiB
Rust
46 lines
1.2 KiB
Rust
use sea_orm::{ActiveModelTrait, ColumnTrait, DbConn, DbErr, EntityTrait, QueryFilter, Set};
|
|
|
|
use models::domains::user;
|
|
use models::params::user::CreateUserParams;
|
|
use models::queries::user::UserQuery;
|
|
|
|
pub async fn create_user(
|
|
db: &DbConn,
|
|
params: CreateUserParams,
|
|
) -> Result<user::ActiveModel, DbErr> {
|
|
user::ActiveModel {
|
|
username: Set(params.username),
|
|
..Default::default()
|
|
}
|
|
.save(db)
|
|
.await
|
|
}
|
|
|
|
pub async fn search_users(db: &DbConn, query: UserQuery) -> Result<Vec<user::Model>, DbErr> {
|
|
user::Entity::find()
|
|
.filter(user::Column::Username.contains(query.username.unwrap_or_default()))
|
|
.all(db)
|
|
.await
|
|
}
|
|
|
|
pub async fn get_user(db: &DbConn, id: i32) -> Result<Option<user::Model>, DbErr> {
|
|
user::Entity::find_by_id(id).one(db).await
|
|
}
|
|
|
|
pub async fn get_user_by_username(
|
|
db: &DbConn,
|
|
username: &str,
|
|
) -> Result<Option<user::Model>, DbErr> {
|
|
user::Entity::find()
|
|
.filter(user::Column::Username.eq(username))
|
|
.one(db)
|
|
.await
|
|
}
|
|
|
|
pub async fn get_users_by_ids(db: &DbConn, ids: Vec<i32>) -> Result<Vec<user::Model>, DbErr> {
|
|
user::Entity::find()
|
|
.filter(user::Column::Id.is_in(ids))
|
|
.all(db)
|
|
.await
|
|
}
|