Revert "Add sql transactions"
This caused the error "locked database".
This reverts commit 9823511b62
.
This commit is contained in:
parent
9823511b62
commit
02c613e0fd
9 changed files with 138 additions and 171 deletions
src/handlers/v1
|
@ -14,12 +14,11 @@ use crate::app_state::AppState;
|
|||
|
||||
#[get("/macros")]
|
||||
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, EmgauwaError> {
|
||||
let mut tx = pool.begin().await?;
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let db_macros = DbMacro::get_all(&mut tx).await?;
|
||||
let macros: Vec<Macro> = convert_db_list(&mut tx, db_macros)?;
|
||||
let db_macros = DbMacro::get_all(&mut pool_conn).await?;
|
||||
let macros: Vec<Macro> = convert_db_list(&mut pool_conn, db_macros)?;
|
||||
|
||||
tx.commit().await?;
|
||||
Ok(HttpResponse::Ok().json(macros))
|
||||
}
|
||||
|
||||
|
@ -28,18 +27,16 @@ pub async fn show(
|
|||
pool: web::Data<Pool<Sqlite>>,
|
||||
path: web::Path<(String,)>,
|
||||
) -> Result<HttpResponse, EmgauwaError> {
|
||||
let mut tx = pool.begin().await?;
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let (macro_uid,) = path.into_inner();
|
||||
let uid = EmgauwaUid::try_from(macro_uid.as_str())?;
|
||||
|
||||
let db_macro = DbMacro::get_by_uid(&mut tx, &uid)
|
||||
let db_macro = DbMacro::get_by_uid(&mut pool_conn, &uid)
|
||||
.await?
|
||||
.ok_or(DatabaseError::NotFound)?;
|
||||
|
||||
let return_macro = Macro::from_db_model(&mut tx, db_macro)?;
|
||||
|
||||
tx.commit().await?;
|
||||
let return_macro = Macro::from_db_model(&mut pool_conn, db_macro)?;
|
||||
Ok(HttpResponse::Ok().json(return_macro))
|
||||
}
|
||||
|
||||
|
@ -48,17 +45,15 @@ pub async fn add(
|
|||
pool: web::Data<Pool<Sqlite>>,
|
||||
data: web::Json<RequestMacroCreate>,
|
||||
) -> Result<HttpResponse, EmgauwaError> {
|
||||
let mut tx = pool.begin().await?;
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let new_macro = DbMacro::create(&mut tx, EmgauwaUid::default(), &data.name).await?;
|
||||
let new_macro = DbMacro::create(&mut pool_conn, EmgauwaUid::default(), &data.name).await?;
|
||||
|
||||
new_macro
|
||||
.set_actions(&mut tx, data.actions.as_slice())
|
||||
.set_actions(&mut pool_conn, data.actions.as_slice())
|
||||
.await?;
|
||||
|
||||
let return_macro = Macro::from_db_model(&mut tx, new_macro)?;
|
||||
|
||||
tx.commit().await?;
|
||||
let return_macro = Macro::from_db_model(&mut pool_conn, new_macro)?;
|
||||
Ok(HttpResponse::Created().json(return_macro))
|
||||
}
|
||||
|
||||
|
@ -68,28 +63,26 @@ pub async fn update(
|
|||
path: web::Path<(String,)>,
|
||||
data: web::Json<RequestMacroUpdate>,
|
||||
) -> Result<HttpResponse, EmgauwaError> {
|
||||
let mut tx = pool.begin().await?;
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let (macro_uid,) = path.into_inner();
|
||||
let uid = EmgauwaUid::try_from(macro_uid.as_str())?;
|
||||
|
||||
let db_macro = DbMacro::get_by_uid(&mut tx, &uid)
|
||||
let db_macro = DbMacro::get_by_uid(&mut pool_conn, &uid)
|
||||
.await?
|
||||
.ok_or(DatabaseError::NotFound)?;
|
||||
|
||||
if let Some(name) = &data.name {
|
||||
db_macro.update(&mut tx, name).await?;
|
||||
db_macro.update(&mut pool_conn, name).await?;
|
||||
}
|
||||
|
||||
if let Some(actions) = &data.actions {
|
||||
db_macro
|
||||
.set_actions(&mut tx, actions.as_slice())
|
||||
.set_actions(&mut pool_conn, actions.as_slice())
|
||||
.await?;
|
||||
}
|
||||
|
||||
let return_macro = Macro::from_db_model(&mut tx, db_macro)?;
|
||||
|
||||
tx.commit().await?;
|
||||
let return_macro = Macro::from_db_model(&mut pool_conn, db_macro)?;
|
||||
Ok(HttpResponse::Ok().json(return_macro))
|
||||
}
|
||||
|
||||
|
@ -98,14 +91,12 @@ pub async fn delete(
|
|||
pool: web::Data<Pool<Sqlite>>,
|
||||
path: web::Path<(String,)>,
|
||||
) -> Result<HttpResponse, EmgauwaError> {
|
||||
let mut tx = pool.begin().await?;
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let (macro_uid,) = path.into_inner();
|
||||
let uid = EmgauwaUid::try_from(macro_uid.as_str())?;
|
||||
|
||||
DbMacro::delete_by_uid(&mut tx, uid).await?;
|
||||
|
||||
tx.commit().await?;
|
||||
DbMacro::delete_by_uid(&mut pool_conn, uid).await?;
|
||||
Ok(HttpResponse::Ok().json("macro got deleted"))
|
||||
}
|
||||
|
||||
|
@ -116,27 +107,27 @@ pub async fn execute(
|
|||
path: web::Path<(String,)>,
|
||||
query: web::Query<RequestMacroExecute>,
|
||||
) -> Result<HttpResponse, EmgauwaError> {
|
||||
let mut tx = pool.begin().await?;
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let (macro_uid,) = path.into_inner();
|
||||
let uid = EmgauwaUid::try_from(macro_uid.as_str())?;
|
||||
|
||||
let db_macro = DbMacro::get_by_uid(&mut tx, &uid)
|
||||
let db_macro = DbMacro::get_by_uid(&mut pool_conn, &uid)
|
||||
.await?
|
||||
.ok_or(DatabaseError::NotFound)?;
|
||||
|
||||
let actions_db = match query.weekday {
|
||||
None => db_macro.get_actions(&mut tx).await?,
|
||||
None => db_macro.get_actions(&mut pool_conn).await?,
|
||||
Some(weekday) => {
|
||||
db_macro
|
||||
.get_actions_weekday(&mut tx, weekday)
|
||||
.get_actions_weekday(&mut pool_conn, weekday)
|
||||
.await?
|
||||
}
|
||||
};
|
||||
let mut actions: Vec<MacroAction> = convert_db_list(&mut tx, actions_db)?;
|
||||
let mut actions: Vec<MacroAction> = convert_db_list(&mut pool_conn, actions_db)?;
|
||||
|
||||
for action in &actions {
|
||||
action.execute(&mut tx).await?;
|
||||
action.execute(&mut pool_conn).await?;
|
||||
}
|
||||
|
||||
let affected_controller_uids: Vec<EmgauwaUid> = actions
|
||||
|
@ -153,7 +144,7 @@ pub async fn execute(
|
|||
if affected_relay_ids.contains(&action.relay.r.id) {
|
||||
continue;
|
||||
}
|
||||
action.relay.reload(&mut tx)?;
|
||||
action.relay.reload(&mut pool_conn)?;
|
||||
affected_relays.push(action.relay.clone());
|
||||
affected_relay_ids.push(action.relay.r.id);
|
||||
}
|
||||
|
@ -166,6 +157,5 @@ pub async fn execute(
|
|||
.await??;
|
||||
}
|
||||
|
||||
tx.commit().await?;
|
||||
Ok(HttpResponse::Ok().finish()) // TODO add a message?
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue