Implementado update_object_conditions() pero non actualiza. Cambio comando de 'abrir' a 'cerrar' por comodidade cos exemplos
This commit is contained in:
parent
f8bc805dce
commit
952acda755
@ -42,6 +42,15 @@ pub fn update_object_location(pegatina: String, new_location: String) -> Result<
|
|||||||
.execute(conn)
|
.execute(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// actualiza as condiciós de un obxeto, devolve o número de rows afectados
|
||||||
|
pub fn update_object_conditions(pegatina: String, cond: Vec<Option<String>>) -> Result<usize, diesel::result::Error> {
|
||||||
|
use crate::schema::object::dsl::*;
|
||||||
|
let conn = &mut establish_connection();
|
||||||
|
diesel::update(object.filter(tag.eq(pegatina)))
|
||||||
|
.set(condiciones.eq(cond))
|
||||||
|
.execute(conn)
|
||||||
|
}
|
||||||
|
|
||||||
// get_salidas trae da base de datos todos os obxetos salida de unha localización
|
// get_salidas trae da base de datos todos os obxetos salida de unha localización
|
||||||
pub fn get_salidas(pegatina: String) -> Result<Vec<RObject>, diesel::result::Error> {
|
pub fn get_salidas(pegatina: String) -> Result<Vec<RObject>, diesel::result::Error> {
|
||||||
use crate::schema::object::dsl::*;
|
use crate::schema::object::dsl::*;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use crate::objects::{get_objects, get_object_here, update_object_location};
|
use crate::objects::{get_objects, get_object_here, update_object_location, update_object_conditions};
|
||||||
use crate::models::Player;
|
use crate::models::Player;
|
||||||
use crate::database::establish_connection;
|
use crate::database::establish_connection;
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
@ -175,29 +175,34 @@ pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//execute_open cambia a condición 'close' a 'open' de un obxeto nesta sala polo nome
|
//execute_open cambia a condición 'close' a 'open' de un obxeto nesta sala polo nome
|
||||||
pub fn execute_open(player: &mut Player, nombre: &str) -> String {
|
pub fn execute_close(player: &mut Player, nombre: &str) -> String {
|
||||||
let mut output = String::from("");
|
let mut output = String::from("");
|
||||||
let location = &player.location;
|
let location = &player.location;
|
||||||
let objeto = get_object_here(location.to_string(), nombre.to_string());
|
let objeto = get_object_here(location.to_string(), nombre.to_string());
|
||||||
|
|
||||||
if objeto.is_ok() {
|
if objeto.is_ok() {
|
||||||
let obj = objeto.unwrap();
|
let mut obj = objeto.unwrap();
|
||||||
// println!("{:?}", obj);
|
println!("{:?}", obj);
|
||||||
|
|
||||||
if obj.tipo == "salida" {
|
if obj.tipo == "salida" {
|
||||||
for condicion in obj.condiciones {
|
for (pos, condicion) in obj.condiciones.iter().enumerate() {
|
||||||
if condicion.as_ref().unwrap() == "open" {
|
if condicion.as_ref().unwrap() == "open" {
|
||||||
output = String::from("Ya está abierta.");
|
output = String::from("Está abierta.");
|
||||||
|
// actualizar a salida en sentido contrario
|
||||||
|
// implementar get_salida_opuesta() para actualizar o sentido contario tamén
|
||||||
|
|
||||||
|
obj.condiciones[pos] = Some("closed".to_string());
|
||||||
|
let res = update_object_conditions(location.to_string(), obj.condiciones);
|
||||||
|
|
||||||
|
// non actualiza, da ok pero actualiza 0 rows
|
||||||
|
match res {
|
||||||
|
Ok(n) => println!("actualizados {} rows", n),
|
||||||
|
Err(error) => println!("Error actualizando: {:?}", error),
|
||||||
|
};
|
||||||
|
|
||||||
break;
|
break;
|
||||||
} else if condicion.as_ref().unwrap() == "closed" {
|
} else if condicion.as_ref().unwrap() == "closed" {
|
||||||
// está cerrada, actualizar a open
|
output = String::from("Ya está cerrada.");
|
||||||
// e actualizar a salida en sentido contrario
|
|
||||||
// implementar actualizar_condiciones()
|
|
||||||
// implementar get_salida_opuesta()
|
|
||||||
output = String::from("Está cerrada.");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
output = String::from("");
|
output = String::from("");
|
||||||
|
@ -106,7 +106,7 @@ pub fn update_state(player: &mut Player, command: &Command) -> String {
|
|||||||
"coger" => output = execute_pick(player, command.noun.as_str()),
|
"coger" => output = execute_pick(player, command.noun.as_str()),
|
||||||
"tirar" => output = execute_drop(player, command.noun.as_str()),
|
"tirar" => output = execute_drop(player, command.noun.as_str()),
|
||||||
"matar" => output = execute_kill(player, command.noun.as_str()),
|
"matar" => output = execute_kill(player, command.noun.as_str()),
|
||||||
"abrir" => output = execute_open(player, command.noun.as_str()),
|
"cerrar" => output = execute_close(player, command.noun.as_str()),
|
||||||
_ => output = format!("No se como hacer eso."),
|
_ => output = format!("No se como hacer eso."),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user