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!(); |         unimplemented!(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async fn save_item(&mut self, _item: &ItemEntity) -> Result<(), GatewayError>  { |     async fn change_item(&mut self, _id: &ItemEntityId, _item: &ItemDetail) -> Result<(), GatewayError>  { | ||||||
|         unimplemented!(); |         unimplemented!(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -165,9 +165,12 @@ impl EntityGateway for InMemoryGateway { | |||||||
|         Ok(new_item) |         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(); |         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(()) |         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> { |     async fn change_item_location(&mut self, item_id: &ItemEntityId, item_location: ItemLocation) -> Result<(), GatewayError> { | ||||||
|         let mut tx = self.pool.begin().await?; |         let mut tx = self.pool.begin().await?; | ||||||
|         if let ItemLocation::Inventory{slot, ..} = &item_location { |         if let ItemLocation::Inventory{slot, ..} = &item_location { | ||||||
|  | |||||||
| @ -933,16 +933,8 @@ impl ItemManager { | |||||||
|             character_id: character.id, |             character_id: character.id, | ||||||
|             slot: slot, |             slot: slot, | ||||||
|             equipped: true, |             equipped: true, | ||||||
|         }).await; |         }).await?; | ||||||
|         entity_gateway.save_item(&ItemEntity{ |         entity_gateway.change_item(&inventory_item.entity_id, &inventory_item.item).await?; | ||||||
|             id: inventory_item.entity_id, |  | ||||||
|             location: ItemLocation::Inventory{ |  | ||||||
|                 character_id: character.id, |  | ||||||
|                 slot: slot, |  | ||||||
|                 equipped: true, |  | ||||||
|             }, |  | ||||||
|             item: inventory_item.item.clone(), |  | ||||||
|         }).await; |  | ||||||
|         Ok(()) |         Ok(()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -968,15 +960,7 @@ impl ItemManager { | |||||||
|             slot: slot, |             slot: slot, | ||||||
|             equipped: false, |             equipped: false, | ||||||
|         }).await; |         }).await; | ||||||
|         entity_gateway.save_item(&ItemEntity{ |         entity_gateway.change_item(&inventory_item.entity_id, &inventory_item.item).await?; | ||||||
|             id: inventory_item.entity_id, |  | ||||||
|             location: ItemLocation::Inventory{ |  | ||||||
|                 character_id: character.id, |  | ||||||
|                 slot: slot, |  | ||||||
|                 equipped: false, |  | ||||||
|             }, |  | ||||||
|             item: inventory_item.item.clone(), |  | ||||||
|         }).await; |  | ||||||
|         Ok(()) |         Ok(()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user