|
@@ -3,7 +3,7 @@
|
|
|
use std::io;
|
|
|
|
|
|
use actix::prelude::*;
|
|
|
-use diesel::{prelude::*, result::Error};
|
|
|
+use diesel::prelude::*;
|
|
|
use rand::{rngs::SmallRng, Rng, SeedableRng};
|
|
|
|
|
|
use crate::models;
|
|
@@ -18,7 +18,7 @@ impl DbExecutor {
|
|
|
DbExecutor {
|
|
|
conn: PgConnection::establish(db_url)
|
|
|
.unwrap_or_else(|_| panic!("Error connecting to {}", db_url)),
|
|
|
- rng: SmallRng::from_entropy(),
|
|
|
+ rng: SmallRng::from_os_rng(),
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -39,10 +39,10 @@ impl Handler<RandomWorld> for DbExecutor {
|
|
|
fn handle(&mut self, _: RandomWorld, _: &mut Self::Context) -> Self::Result {
|
|
|
use crate::schema::world::dsl::*;
|
|
|
|
|
|
- let random_id = self.rng.gen_range(1..10_001);
|
|
|
+ let random_id = self.rng.random_range(1..10_001);
|
|
|
match world
|
|
|
.filter(id.eq(random_id))
|
|
|
- .load::<models::World>(&self.conn)
|
|
|
+ .load::<models::World>(&mut self.conn)
|
|
|
{
|
|
|
Ok(mut items) => Ok(items.pop().unwrap()),
|
|
|
Err(_) => Err(io::Error::new(io::ErrorKind::Other, "Database error")),
|
|
@@ -64,8 +64,8 @@ impl Handler<RandomWorlds> for DbExecutor {
|
|
|
|
|
|
let mut worlds = Vec::with_capacity(msg.0 as usize);
|
|
|
for _ in 0..msg.0 {
|
|
|
- let w_id = self.rng.gen_range(1..10_001);
|
|
|
- let w = match world.filter(id.eq(w_id)).load::<models::World>(&self.conn) {
|
|
|
+ let w_id = self.rng.random_range(1..10_001);
|
|
|
+ let w = match world.filter(id.eq(w_id)).load::<models::World>(&mut self.conn) {
|
|
|
Ok(mut items) => items.pop().unwrap(),
|
|
|
Err(_) => {
|
|
|
return Err(io::Error::new(io::ErrorKind::Other, "Database error"));
|
|
@@ -91,27 +91,28 @@ impl Handler<UpdateWorld> for DbExecutor {
|
|
|
|
|
|
let mut worlds = Vec::with_capacity(msg.0 as usize);
|
|
|
for _ in 0..msg.0 {
|
|
|
- let w_id: i32 = self.rng.gen_range(1..10_001);
|
|
|
- let mut w = match world.filter(id.eq(w_id)).load::<models::World>(&self.conn) {
|
|
|
+ let w_id: i32 = self.rng.random_range(1..10_001);
|
|
|
+ let mut w = match world.filter(id.eq(w_id)).load::<models::World>(&mut self.conn) {
|
|
|
Ok(mut items) => items.pop().unwrap(),
|
|
|
Err(_) => {
|
|
|
return Err(io::Error::new(io::ErrorKind::Other, "Database error"));
|
|
|
}
|
|
|
};
|
|
|
- w.randomnumber = self.rng.gen_range(1..10_001);
|
|
|
+ w.randomnumber = self.rng.random_range(1..10_001);
|
|
|
worlds.push(w);
|
|
|
}
|
|
|
worlds.sort_by_key(|w| w.id);
|
|
|
|
|
|
- let _ = self.conn.transaction::<(), Error, _>(|| {
|
|
|
+ self.conn.transaction(|conn| {
|
|
|
for w in &worlds {
|
|
|
- let _ = diesel::update(world)
|
|
|
+ diesel::update(world)
|
|
|
.filter(id.eq(w.id))
|
|
|
.set(randomnumber.eq(w.randomnumber))
|
|
|
- .execute(&self.conn);
|
|
|
+ .execute(conn)?;
|
|
|
}
|
|
|
Ok(())
|
|
|
- });
|
|
|
+ })
|
|
|
+ .map_err(|e: diesel::result::Error| io::Error::new(io::ErrorKind::Other, e))?;
|
|
|
|
|
|
Ok(worlds)
|
|
|
}
|
|
@@ -129,7 +130,7 @@ impl Handler<TellFortune> for DbExecutor {
|
|
|
fn handle(&mut self, _: TellFortune, _: &mut Self::Context) -> Self::Result {
|
|
|
use crate::schema::fortune::dsl::*;
|
|
|
|
|
|
- match fortune.load::<models::Fortune>(&self.conn) {
|
|
|
+ match fortune.load::<models::Fortune>(&mut self.conn) {
|
|
|
Ok(mut items) => {
|
|
|
items.push(models::Fortune {
|
|
|
id: 0,
|