cargo fmt
This commit is contained in:
parent
952acda755
commit
cb8b9790f0
@ -6,8 +6,6 @@ use std::env;
|
||||
pub fn establish_connection() -> PgConnection {
|
||||
dotenv().ok();
|
||||
|
||||
let database_url = env::var("DATABASE_URL")
|
||||
.expect("DATABASE_URL must be set");
|
||||
PgConnection::establish(&database_url)
|
||||
.expect(&format!("Error connecting to {}", database_url))
|
||||
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
|
||||
PgConnection::establish(&database_url).expect(&format!("Error connecting to {}", database_url))
|
||||
}
|
||||
|
27
src/main.rs
27
src/main.rs
@ -1,19 +1,19 @@
|
||||
use std::{env, io};
|
||||
use tokio::io::AsyncWriteExt;
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
use std::{env, io};
|
||||
|
||||
pub mod database;
|
||||
pub mod models;
|
||||
pub mod npc;
|
||||
pub mod objects;
|
||||
pub mod player;
|
||||
pub mod rlib;
|
||||
pub mod rlocation;
|
||||
pub mod player;
|
||||
pub mod objects;
|
||||
pub mod schema;
|
||||
pub mod models;
|
||||
pub mod database;
|
||||
pub mod npc;
|
||||
|
||||
// use crate::player::Player;
|
||||
use crate::rlib::set_player;
|
||||
use crate::player::update_player;
|
||||
use crate::rlib::set_player;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> io::Result<()> {
|
||||
@ -26,14 +26,14 @@ async fn main() -> io::Result<()> {
|
||||
|
||||
loop {
|
||||
let (socket, _) = listener.accept().await?;
|
||||
tokio::spawn(procesar_socket(socket)); // tokio::spawn """"abre un novo fío""""
|
||||
tokio::spawn(procesar_socket(socket)); // tokio::spawn """"abre un novo fío""""
|
||||
}
|
||||
}
|
||||
|
||||
async fn procesar_socket(mut socket: TcpStream) -> io::Result<()> {
|
||||
// intro
|
||||
socket.write_all(b"\x1B[2J").await?; // clear screen
|
||||
socket.write_all(b"\x1B[1;1H").await?; // position on 1,1
|
||||
socket.write_all(b"\x1B[2J").await?; // clear screen
|
||||
socket.write_all(b"\x1B[1;1H").await?; // position on 1,1
|
||||
|
||||
let banner = "\n\n\
|
||||
██████╗░███████╗███████╗███╗░░██╗████████╗██████╗░░█████╗░██████╗░░█████╗░\n\
|
||||
@ -50,10 +50,13 @@ async fn procesar_socket(mut socket: TcpStream) -> io::Result<()> {
|
||||
let mut output: String;
|
||||
let mut player = set_player(&mut socket).await;
|
||||
|
||||
let intro = format!("Bienvenido {}. Vamos a empezar a jugar... \n\n\
|
||||
let intro = format!(
|
||||
"Bienvenido {}. Vamos a empezar a jugar... \n\n\
|
||||
Despiertas en la oscuridad con un fuerte dolor de cabeza. \n\
|
||||
Un fuerte sonido de alarma machaca tus oídos. No ayuda nada a tu dolor de cabeza. \n\
|
||||
Qué vas a hacer?", player.nombre);
|
||||
Qué vas a hacer?",
|
||||
player.nombre
|
||||
);
|
||||
socket.write_all(intro.as_bytes()).await?;
|
||||
|
||||
// main loop
|
||||
|
@ -1,5 +1,5 @@
|
||||
use diesel::prelude::*;
|
||||
use crate::schema::*;
|
||||
use diesel::prelude::*;
|
||||
|
||||
#[derive(Queryable)]
|
||||
#[diesel(table_name = location)]
|
||||
|
15
src/npc.rs
15
src/npc.rs
@ -1,22 +1,19 @@
|
||||
use crate::database::establish_connection;
|
||||
use crate::models::*;
|
||||
use diesel::prelude::*;
|
||||
use crate::database::establish_connection;
|
||||
|
||||
//get_npc_here trae da base de datos o npc polo nome e a pegatina da sala actual
|
||||
pub fn get_npc_here(pegatina: String, nome: String) -> Result<Rnpc, diesel::result::Error> {
|
||||
use crate::schema::npc::dsl::*;
|
||||
use crate::schema::npc::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
npc
|
||||
.filter(location.eq(pegatina))
|
||||
npc.filter(location.eq(pegatina))
|
||||
.filter(nombre.eq(nome))
|
||||
.first(conn)
|
||||
}
|
||||
|
||||
// get_npcs trae da base de datos todos os npcs de unha localización
|
||||
// get_npcs trae da base de datos todos os npcs de unha localización
|
||||
pub fn get_npcs(pegatina: String) -> Result<Vec<Rnpc>, diesel::result::Error> {
|
||||
use crate::schema::npc::dsl::*;
|
||||
use crate::schema::npc::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
npc
|
||||
.filter(location.eq(pegatina))
|
||||
.get_results(conn)
|
||||
npc.filter(location.eq(pegatina)).get_results(conn)
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
use crate::database::establish_connection;
|
||||
use crate::models::RObject;
|
||||
use diesel::prelude::*;
|
||||
use crate::database::establish_connection;
|
||||
|
||||
//get_object trae da base de datos un obxeto pola sua pegatina
|
||||
//get_object trae da base de datos un obxeto pola sua pegatina
|
||||
pub fn get_object(pegatina: String) -> Result<RObject, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
use crate::schema::object::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
object
|
||||
.filter(tipo.eq("item"))
|
||||
@ -12,9 +12,9 @@ pub fn get_object(pegatina: String) -> Result<RObject, diesel::result::Error> {
|
||||
.first(conn)
|
||||
}
|
||||
|
||||
// get_objects trae da base de datos todos os obxetos de unha localización
|
||||
// get_objects trae da base de datos todos os obxetos de unha localización
|
||||
pub fn get_objects(pegatina: String) -> Result<Vec<RObject>, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
use crate::schema::object::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
object
|
||||
.filter(tipo.eq("item"))
|
||||
@ -24,7 +24,7 @@ pub fn get_objects(pegatina: String) -> Result<Vec<RObject>, diesel::result::Err
|
||||
|
||||
//get_object_here trae da base de datos o obxeto polo nome e a pegatina da sala actual
|
||||
pub fn get_object_here(pegatina: String, nome: String) -> Result<RObject, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
use crate::schema::object::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
object
|
||||
.filter(location.eq(pegatina))
|
||||
@ -33,8 +33,11 @@ pub fn get_object_here(pegatina: String, nome: String) -> Result<RObject, diesel
|
||||
}
|
||||
|
||||
// actualiza a localización de un obxeto, devolve o número de rows afectados
|
||||
pub fn update_object_location(pegatina: String, new_location: String) -> Result<usize, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
pub fn update_object_location(
|
||||
pegatina: String,
|
||||
new_location: String,
|
||||
) -> Result<usize, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
// println!("{} {}", pegatina, new_location);
|
||||
let conn = &mut establish_connection();
|
||||
diesel::update(object.filter(tag.eq(pegatina)))
|
||||
@ -43,17 +46,20 @@ pub fn update_object_location(pegatina: String, new_location: String) -> Result<
|
||||
}
|
||||
|
||||
// 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::*;
|
||||
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> {
|
||||
use crate::schema::object::dsl::*;
|
||||
use crate::schema::object::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
object
|
||||
.filter(tipo.eq("salida"))
|
||||
@ -63,7 +69,7 @@ pub fn get_salidas(pegatina: String) -> Result<Vec<RObject>, diesel::result::Err
|
||||
|
||||
//get_salidas_here trae da base de datos a salida polo nome e a pegatina da sala actual
|
||||
pub fn get_salidas_here(pegatina: String, nome: String) -> Result<RObject, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
use crate::schema::object::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
object
|
||||
.filter(tipo.eq("salida"))
|
||||
@ -71,4 +77,3 @@ pub fn get_salidas_here(pegatina: String, nome: String) -> Result<RObject, diese
|
||||
.filter(nombre.eq(nome))
|
||||
.first(conn)
|
||||
}
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
use crate::objects::{get_objects, get_object_here, update_object_location, update_object_conditions};
|
||||
use crate::models::Player;
|
||||
use crate::database::establish_connection;
|
||||
use diesel::prelude::*;
|
||||
use crate::models::Player;
|
||||
use crate::npc::get_npc_here;
|
||||
use crate::objects::{
|
||||
get_object_here, get_objects, update_object_conditions, update_object_location,
|
||||
};
|
||||
use diesel::prelude::*;
|
||||
use rand::Rng;
|
||||
|
||||
// get_player le o xogador polo nick
|
||||
pub fn get_player(nome: String) -> Result<Player, diesel::result::Error> {
|
||||
use crate::schema::player::dsl::*;
|
||||
use crate::schema::player::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
player
|
||||
.filter(nombre.eq(nome))
|
||||
.first(conn)
|
||||
player.filter(nombre.eq(nome)).first(conn)
|
||||
}
|
||||
|
||||
// create_player garda o xogador
|
||||
pub fn create_player(newplayer: &Player) -> Result<usize, diesel::result::Error> {
|
||||
use crate::schema::player;
|
||||
pub fn create_player(newplayer: &Player) -> Result<usize, diesel::result::Error> {
|
||||
use crate::schema::player;
|
||||
let conn = &mut establish_connection();
|
||||
|
||||
diesel::insert_into(player::table)
|
||||
@ -26,17 +26,17 @@ pub fn create_player(newplayer: &Player) -> Result<usize, diesel::result::Error>
|
||||
|
||||
// update_player actualiza o xogador
|
||||
pub fn update_player(newplayer: &Player) -> Result<usize, diesel::result::Error> {
|
||||
use crate::schema::player::dsl::*; // para ter o find no update
|
||||
use crate::schema::player::dsl::*; // para ter o find no update
|
||||
let conn = &mut establish_connection();
|
||||
|
||||
// FIXME: actualiza todos os rows...
|
||||
diesel::update(player::find(player, &newplayer.tag))
|
||||
.set(newplayer) // co trait AsChangeSet podese actualizar a struct enteira
|
||||
.set(newplayer) // co trait AsChangeSet podese actualizar a struct enteira
|
||||
.execute(conn)
|
||||
}
|
||||
|
||||
// execute_search mostra os obxetos na ubicación do xogador
|
||||
pub fn execute_search(player: &mut Player) -> String {
|
||||
pub fn execute_search(player: &mut Player) -> String {
|
||||
let mut output: String;
|
||||
let current = &player.location;
|
||||
let objetos = get_objects(current.to_string());
|
||||
@ -44,9 +44,9 @@ pub fn execute_search(player: &mut Player) -> String {
|
||||
if objetos.is_ok() && objetos.as_ref().unwrap().len() > 0 {
|
||||
output = String::from("En esta sala encuentras:\n");
|
||||
for objeto in objetos.unwrap() {
|
||||
let mut nombre = objeto.nombre;
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
let mut nombre = objeto.nombre;
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
}
|
||||
} else {
|
||||
output = String::from("No encuentras ningún objeto en esta sala.")
|
||||
@ -64,9 +64,9 @@ pub fn execute_inventory(player: &mut Player) -> String {
|
||||
if objetos.is_ok() && objetos.as_ref().unwrap().len() > 0 {
|
||||
output = String::from("Portas los siguientes objetos:\n");
|
||||
for objeto in objetos.unwrap() {
|
||||
let mut nombre = objeto.nombre;
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
let mut nombre = objeto.nombre;
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
}
|
||||
} else {
|
||||
output = String::from("No portas ningún objeto.")
|
||||
@ -76,15 +76,14 @@ pub fn execute_inventory(player: &mut Player) -> String {
|
||||
}
|
||||
|
||||
// execute_pick recolle un obxeto
|
||||
pub fn execute_pick(player: &mut Player, nombre: &str) -> String {
|
||||
pub fn execute_pick(player: &mut Player, nombre: &str) -> String {
|
||||
let output: String;
|
||||
let location = &player.location;
|
||||
let obxeto = get_object_here(location.to_string(), nombre.to_string());
|
||||
|
||||
if obxeto.is_ok() {
|
||||
let res = update_object_location(
|
||||
obxeto.as_ref().unwrap().tag.clone(),
|
||||
player.tag.to_string());
|
||||
let res =
|
||||
update_object_location(obxeto.as_ref().unwrap().tag.clone(), player.tag.to_string());
|
||||
|
||||
if res.is_ok() && res.unwrap() > 0 {
|
||||
output = format!("{} ahora está en tu inventario.", obxeto.unwrap().nombre);
|
||||
@ -107,7 +106,8 @@ pub fn execute_drop(player: &mut Player, nombre: &str) -> String {
|
||||
if obxeto.is_ok() {
|
||||
let res = update_object_location(
|
||||
obxeto.as_ref().unwrap().tag.clone(),
|
||||
player.location.to_string()); //tirao aquí
|
||||
player.location.to_string(),
|
||||
); //tirao aquí
|
||||
|
||||
if res.is_ok() && res.unwrap() > 0 {
|
||||
output = format!("Tiras {}.", obxeto.unwrap().nombre);
|
||||
@ -123,7 +123,7 @@ pub fn execute_drop(player: &mut Player, nombre: &str) -> String {
|
||||
|
||||
// execute_kill intenta matar un npc
|
||||
pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
||||
let mut output= String::from("");
|
||||
let mut output = String::from("");
|
||||
let location = &player.location;
|
||||
let npc = get_npc_here(location.to_string(), nombre.to_string());
|
||||
|
||||
@ -136,7 +136,10 @@ pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
||||
if tohit >= malo.ca {
|
||||
let damage = rand::thread_rng().gen_range(1..6);
|
||||
malo.hp = malo.hp - damage;
|
||||
let tmp = format!("Golpeas a {} por {} de daño, le quedan {} pg.", malo.nombre, damage, malo.hp);
|
||||
let tmp = format!(
|
||||
"Golpeas a {} por {} de daño, le quedan {} pg.",
|
||||
malo.nombre, damage, malo.hp
|
||||
);
|
||||
output = format!("{}\n{}", output, tmp);
|
||||
} else {
|
||||
let tmp = format!("No consigues golpear a {}.", malo.nombre);
|
||||
@ -148,13 +151,16 @@ pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
||||
if tohit >= player.ca {
|
||||
let damage = rand::thread_rng().gen_range(1..6);
|
||||
player.hp = player.hp - damage;
|
||||
let tmp = format!("{} te golpea por {} de daño, te quedan {} pg.", malo.nombre, damage, player.hp);
|
||||
let tmp = format!(
|
||||
"{} te golpea por {} de daño, te quedan {} pg.",
|
||||
malo.nombre, damage, player.hp
|
||||
);
|
||||
output = format!("{}\n{}", output, tmp);
|
||||
} else {
|
||||
let tmp = format!("{} no consigue herirte.", malo.nombre);
|
||||
output = format!("{}\n{}", output, tmp);
|
||||
}
|
||||
print!("{}",output); //FIXME si saco esto, non o concatena coa salida
|
||||
print!("{}", output); //FIXME si saco esto, non o concatena coa salida
|
||||
}
|
||||
|
||||
let resolucion: String;
|
||||
@ -166,7 +172,6 @@ pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
||||
resolucion = String::from("No se que ha pasado. Alguien debería estar muerto.");
|
||||
}
|
||||
output = format!("{}\n{}", output, resolucion);
|
||||
|
||||
} else {
|
||||
output = String::from("No encuentro lo que quieres matar.");
|
||||
}
|
||||
|
29
src/rlib.rs
29
src/rlib.rs
@ -1,8 +1,8 @@
|
||||
use tokio::net::TcpStream;
|
||||
use tokio::io::{AsyncReadExt,AsyncWriteExt};
|
||||
use crate::rlocation::{execute_go, execute_look};
|
||||
use crate::player::*;
|
||||
use crate::models::Player;
|
||||
use crate::player::*;
|
||||
use crate::rlocation::{execute_go, execute_look};
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||
use tokio::net::TcpStream;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub struct Command {
|
||||
@ -28,15 +28,15 @@ impl Command {
|
||||
|
||||
pub async fn set_player(socket: &mut TcpStream) -> Player {
|
||||
// prompt
|
||||
socket.write_all(b"\n").await.unwrap();
|
||||
socket.write_all("Cuál es tu nombre?\n".as_bytes()).await.unwrap();
|
||||
socket.write_all(b"\n").await.unwrap();
|
||||
socket
|
||||
.write_all("Cuál es tu nombre?\n".as_bytes())
|
||||
.await
|
||||
.unwrap();
|
||||
socket.write_all(b"> ").await.unwrap();
|
||||
|
||||
let mut buf = vec![0; 1024];
|
||||
let n = socket
|
||||
.read(&mut buf)
|
||||
.await
|
||||
.unwrap();
|
||||
let n = socket.read(&mut buf).await.unwrap();
|
||||
|
||||
let input_str = String::from_utf8(buf[0..n].to_vec()).unwrap();
|
||||
|
||||
@ -52,7 +52,7 @@ pub async fn set_player(socket: &mut TcpStream) -> Player {
|
||||
if check_player.is_ok() {
|
||||
player = check_player.unwrap();
|
||||
} else {
|
||||
player = Player{
|
||||
player = Player {
|
||||
tag: Uuid::new_v4().to_string(),
|
||||
nombre: nick.to_string(),
|
||||
descripcion: "humano, equipo básico".to_string(),
|
||||
@ -71,14 +71,11 @@ pub async fn set_player(socket: &mut TcpStream) -> Player {
|
||||
|
||||
pub async fn get_input(socket: &mut TcpStream) -> Command {
|
||||
// prompt
|
||||
socket.write_all(b"\n").await.unwrap();
|
||||
socket.write_all(b"\n").await.unwrap();
|
||||
socket.write_all(b"> ").await.unwrap();
|
||||
|
||||
let mut buf = vec![0; 1024];
|
||||
let n = socket
|
||||
.read(&mut buf)
|
||||
.await
|
||||
.unwrap();
|
||||
let n = socket.read(&mut buf).await.unwrap();
|
||||
|
||||
let input_str = String::from_utf8(buf[0..n].to_vec()).unwrap();
|
||||
|
||||
|
@ -1,10 +1,9 @@
|
||||
use crate::objects::{get_salidas, get_object_here, get_salidas_here};
|
||||
use crate::npc::{get_npc_here, get_npcs};
|
||||
use crate::objects::{get_object_here, get_salidas, get_salidas_here};
|
||||
|
||||
use crate::database::establish_connection;
|
||||
use crate::models::*;
|
||||
use diesel::prelude::*;
|
||||
use crate::database::establish_connection;
|
||||
|
||||
|
||||
pub fn execute_look(player: &mut Player, nombre: &str) -> String {
|
||||
let mut output: String;
|
||||
@ -21,10 +20,10 @@ pub fn execute_look(player: &mut Player, nombre: &str) -> String {
|
||||
if salidas.is_ok() && salidas.as_ref().unwrap().len() > 0 {
|
||||
output.push_str("\nSalidas:\n");
|
||||
for salidas in salidas.unwrap() {
|
||||
let mut nombre = "- ".to_string();
|
||||
nombre.push_str(&salidas.nombre);
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
let mut nombre = "- ".to_string();
|
||||
nombre.push_str(&salidas.nombre);
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,13 +33,12 @@ pub fn execute_look(player: &mut Player, nombre: &str) -> String {
|
||||
if npcs.is_ok() && npcs.as_ref().unwrap().len() > 0 {
|
||||
output.push_str("\nTambién ves:\n");
|
||||
for npc in npcs.as_ref().unwrap() {
|
||||
let mut nombre = "- ".to_string();
|
||||
nombre.push_str(&npc.nombre);
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
let mut nombre = "- ".to_string();
|
||||
nombre.push_str(&npc.nombre);
|
||||
nombre.push_str("\n");
|
||||
output.push_str(&nombre);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
output = String::from("Navengado el ether!");
|
||||
}
|
||||
@ -62,7 +60,7 @@ pub fn execute_look(player: &mut Player, nombre: &str) -> String {
|
||||
output = String::from("Qué quieres mirar?");
|
||||
}
|
||||
|
||||
return output
|
||||
return output;
|
||||
}
|
||||
|
||||
pub fn execute_go(player: &mut Player, coord: &str) -> String {
|
||||
@ -82,7 +80,7 @@ pub fn execute_go(player: &mut Player, coord: &str) -> String {
|
||||
"oeste" => nombre = "oeste".to_string(),
|
||||
"arriba" => nombre = "arriba".to_string(),
|
||||
"abajo" => nombre = "abajo".to_string(),
|
||||
_ => nombre = "".to_string(),
|
||||
_ => nombre = "".to_string(),
|
||||
}
|
||||
|
||||
let tag: String;
|
||||
@ -106,7 +104,6 @@ pub fn execute_go(player: &mut Player, coord: &str) -> String {
|
||||
} else {
|
||||
output = String::from("No existe esa salida.");
|
||||
}
|
||||
|
||||
} else {
|
||||
output = String::from("No entiendo a donde quieres ir. Debes elegir una coordenada correspondiente a las salidas de esta sala.");
|
||||
}
|
||||
@ -116,9 +113,7 @@ pub fn execute_go(player: &mut Player, coord: &str) -> String {
|
||||
|
||||
// get_location busca na base de datos a localización polo seu tag
|
||||
pub fn get_location(pegatina: String) -> Result<RLocation, diesel::result::Error> {
|
||||
use crate::schema::location::dsl::*;
|
||||
use crate::schema::location::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
location
|
||||
.filter(tag.eq(pegatina))
|
||||
.first(conn)
|
||||
location.filter(tag.eq(pegatina)).first(conn)
|
||||
}
|
||||
|
@ -45,9 +45,4 @@ diesel::table! {
|
||||
}
|
||||
}
|
||||
|
||||
diesel::allow_tables_to_appear_in_same_query!(
|
||||
location,
|
||||
npc,
|
||||
object,
|
||||
player,
|
||||
);
|
||||
diesel::allow_tables_to_appear_in_same_query!(location, npc, object, player,);
|
||||
|
Loading…
Reference in New Issue
Block a user