diff --git a/server/model/src/db/geofence.rs b/server/model/src/db/geofence.rs index 1668de88..94491866 100644 --- a/server/model/src/db/geofence.rs +++ b/server/model/src/db/geofence.rs @@ -416,10 +416,11 @@ impl Query { ) -> Result>, DbErr> { let column = Column::from_str(&args.sort_by).unwrap_or(Column::Name); - let mut paginator = Entity::find() - .order_by(column, parse_order(&args.order)) - .filter(Column::Name.like(format!("%{}%", args.q).as_str())); + let mut paginator = Entity::find().order_by(column, parse_order(&args.order)); + if args.q.len() > 0 { + paginator = paginator.filter(Column::Name.like(format!("%{}%", args.q).as_str())); + } if let Some(parent) = args.parent { paginator = if parent == 0 { paginator.filter(Column::Parent.is_null()) @@ -585,9 +586,17 @@ impl Query { /// Updates or creates a Geofence model, returns a model struct pub async fn upsert(db: &DatabaseConnection, id: u32, json: Json) -> Result { let mut json = json; - let old_model = Entity::find_by_id(id).one(db).await?; + let mut new_model = json.to_geofence()?; + let old_model = if id == 0 { + Query::get_one(db, new_model.name.clone().unwrap()) + .await + .ok() + } else { + Entity::find_by_id(id).one(db).await? + }; + let name = new_model.name.as_ref(); let model = if let Some(old_model) = old_model {