save_item -> change_item, impl for postgres
This commit is contained in:
parent
ce3e58d459
commit
e8fd37e32d
@ -65,7 +65,7 @@ pub trait EntityGateway: Send + Sync + Clone {
|
||||
unimplemented!();
|
||||
}
|
||||
|
||||
async fn save_item(&mut self, _item: &ItemEntity) -> Result<(), GatewayError> {
|
||||
async fn change_item(&mut self, _id: &ItemEntityId, _item: &ItemDetail) -> Result<(), GatewayError> {
|
||||
unimplemented!();
|
||||
}
|
||||
|
||||
|
@ -165,9 +165,12 @@ impl EntityGateway for InMemoryGateway {
|
||||
Ok(new_item)
|
||||
}
|
||||
|
||||
async fn save_item(&mut self, item: &ItemEntity) -> Result<(), GatewayError> {
|
||||
async fn change_item(&mut self, id: &ItemEntityId, item: &ItemDetail) -> Result<(), GatewayError> {
|
||||
let mut items = self.items.lock().unwrap();
|
||||
items.insert(item.id, item.clone());
|
||||
if let Some((_, ref mut old_item)) = items.iter_mut().find(|(existing_id, _)| **existing_id == *id) {
|
||||
old_item.item = item.clone();
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -312,6 +312,14 @@ impl EntityGateway for PostgresGateway {
|
||||
})
|
||||
}
|
||||
|
||||
async fn change_item(&mut self, id: &ItemEntityId, item: &ItemDetail) -> Result<(), GatewayError> {
|
||||
sqlx::query("update item set item = $1 where id = $2")
|
||||
.bind(sqlx::types::Json(PgItemDetail::from(item.clone())))
|
||||
.bind(id.0)
|
||||
.execute(&self.pool).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn change_item_location(&mut self, item_id: &ItemEntityId, item_location: ItemLocation) -> Result<(), GatewayError> {
|
||||
let mut tx = self.pool.begin().await?;
|
||||
if let ItemLocation::Inventory{slot, ..} = &item_location {
|
||||
|
@ -933,16 +933,8 @@ impl ItemManager {
|
||||
character_id: character.id,
|
||||
slot: slot,
|
||||
equipped: true,
|
||||
}).await;
|
||||
entity_gateway.save_item(&ItemEntity{
|
||||
id: inventory_item.entity_id,
|
||||
location: ItemLocation::Inventory{
|
||||
character_id: character.id,
|
||||
slot: slot,
|
||||
equipped: true,
|
||||
},
|
||||
item: inventory_item.item.clone(),
|
||||
}).await;
|
||||
}).await?;
|
||||
entity_gateway.change_item(&inventory_item.entity_id, &inventory_item.item).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -968,15 +960,7 @@ impl ItemManager {
|
||||
slot: slot,
|
||||
equipped: false,
|
||||
}).await;
|
||||
entity_gateway.save_item(&ItemEntity{
|
||||
id: inventory_item.entity_id,
|
||||
location: ItemLocation::Inventory{
|
||||
character_id: character.id,
|
||||
slot: slot,
|
||||
equipped: false,
|
||||
},
|
||||
item: inventory_item.item.clone(),
|
||||
}).await;
|
||||
entity_gateway.change_item(&inventory_item.entity_id, &inventory_item.item).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user