summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortom barrett <spalf0@gmail.com>2019-03-28 10:18:53 -0500
committertom barrett <spalf0@gmail.com>2019-03-29 07:42:22 -0500
commit50d92d677d6d53a83df15188c1b820b2b163e720 (patch)
tree4aa31171a8a00e8967c17b5eaf99afdf49e66724
parentf8c446ce74329fc5844e0fc1fd82e618242196f4 (diff)
unified entires, now use main serde lib, added another postgres test assert, simplified
-rw-r--r--Cargo.lock4
-rw-r--r--Cargo.toml3
-rw-r--r--README.md1
-rw-r--r--migrations/1_create_masses/down.sql1
-rw-r--r--migrations/1_create_masses/up.sql1
-rw-r--r--postgres/.pgpass1
-rw-r--r--postgres/bootstrap.sh9
-rw-r--r--postgres/pg_hba.conf92
-rw-r--r--src/bin/client.rs6
-rw-r--r--src/bin/migrate.rs5
-rw-r--r--src/lib.rs3
-rw-r--r--src/mass.rs31
-rw-r--r--src/schema.rs2
-rw-r--r--tests/tests.rs18
14 files changed, 49 insertions, 128 deletions
diff --git a/Cargo.lock b/Cargo.lock
index ffa901e..ab813f4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -248,6 +248,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "serde"
version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
+]
[[package]]
name = "serde_derive"
@@ -278,7 +281,6 @@ dependencies = [
"migrations_internals 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/Cargo.toml b/Cargo.toml
index ac59a4e..38fd525 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,8 +5,7 @@ authors = ["tom barrett <spalf0@gmail.com>"]
edition = "2018"
[dependencies]
-serde = "1.0"
-serde_derive = "1.0"
+serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
termion = "*"
rand = "0.6"
diff --git a/README.md b/README.md
index da9fd92..dda628f 100644
--- a/README.md
+++ b/README.md
@@ -29,3 +29,4 @@ nice to haves
- server ability to quit and import/export all current data
- have something like lightshope donation page
- give tractorbeam client bring option ability to choose desired distance
+- make constants file some way of being global and read on run so you can give it faster sleep paramters for tests
diff --git a/migrations/1_create_masses/down.sql b/migrations/1_create_masses/down.sql
index 819bb40..9e8b3a8 100644
--- a/migrations/1_create_masses/down.sql
+++ b/migrations/1_create_masses/down.sql
@@ -1,2 +1 @@
--- This file should undo anything in `up.sql`
DROP TABLE masses
diff --git a/migrations/1_create_masses/up.sql b/migrations/1_create_masses/up.sql
index c0b6890..67c3b3d 100644
--- a/migrations/1_create_masses/up.sql
+++ b/migrations/1_create_masses/up.sql
@@ -1,4 +1,3 @@
--- Your SQL goes here
CREATE TABLE masses (
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL,
diff --git a/postgres/.pgpass b/postgres/.pgpass
deleted file mode 100644
index 64413d2..0000000
--- a/postgres/.pgpass
+++ /dev/null
@@ -1 +0,0 @@
-localhost:5432:*:space:space
diff --git a/postgres/bootstrap.sh b/postgres/bootstrap.sh
index 070e104..11474a9 100644
--- a/postgres/bootstrap.sh
+++ b/postgres/bootstrap.sh
@@ -18,10 +18,13 @@ sudo -u postgres psql -c "CREATE USER $USERNAME WITH PASSWORD '$PASSWORD';"
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $USERNAME;"
# copy configs
-cp /vagrant/postgres/*conf /etc/postgresql/9.6/main/
-cp /vagrant/postgres/.pg* /home/vagrant/
+cp /vagrant/postgres/pg_hba.conf /etc/postgresql/9.6/main/
+cp /vagrant/postgres/postgresql.conf /etc/postgresql/9.6/main/
+cp /vagrant/postgres/.pgadmin3 /home/vagrant/
+echo "localhost:5432:*:$USERNAME:$PASSWORD" > /home/vagrant/.pgpass
-# give ownership
+# give permissions
+chmod 0600 /home/vagrant/.pgpass
chown -R vagrant:vagrant /home/vagrant
# systemd
diff --git a/postgres/pg_hba.conf b/postgres/pg_hba.conf
index f9e80f6..0447eb5 100644
--- a/postgres/pg_hba.conf
+++ b/postgres/pg_hba.conf
@@ -1,94 +1,8 @@
-# PostgreSQL Client Authentication Configuration File
-# ===================================================
-#
-# Refer to the "Client Authentication" section in the PostgreSQL
-# documentation for a complete description of this file. A short
-# synopsis follows.
-#
-# This file controls: which hosts are allowed to connect, how clients
-# are authenticated, which PostgreSQL user names they can use, which
-# databases they can access. Records take one of these forms:
-#
-# local DATABASE USER METHOD [OPTIONS]
-# host DATABASE USER ADDRESS METHOD [OPTIONS]
-# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
-# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
-#
-# (The uppercase items must be replaced by actual values.)
-#
-# The first field is the connection type: "local" is a Unix-domain
-# socket, "host" is either a plain or SSL-encrypted TCP/IP socket,
-# "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a
-# plain TCP/IP socket.
-#
-# DATABASE can be "all", "sameuser", "samerole", "replication", a
-# database name, or a comma-separated list thereof. The "all"
-# keyword does not match "replication". Access to replication
-# must be enabled in a separate record (see example below).
-#
-# USER can be "all", a user name, a group name prefixed with "+", or a
-# comma-separated list thereof. In both the DATABASE and USER fields
-# you can also write a file name prefixed with "@" to include names
-# from a separate file.
-#
-# ADDRESS specifies the set of hosts the record matches. It can be a
-# host name, or it is made up of an IP address and a CIDR mask that is
-# an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that
-# specifies the number of significant bits in the mask. A host name
-# that starts with a dot (.) matches a suffix of the actual host name.
-# Alternatively, you can write an IP address and netmask in separate
-# columns to specify the set of hosts. Instead of a CIDR-address, you
-# can write "samehost" to match any of the server's own IP addresses,
-# or "samenet" to match any address in any subnet that the server is
-# directly connected to.
-#
-# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
-# "ident", "peer", "pam", "ldap", "radius" or "cert". Note that
-# "password" sends passwords in clear text; "md5" is preferred since
-# it sends encrypted passwords.
-#
-# OPTIONS are a set of options for the authentication in the format
-# NAME=VALUE. The available options depend on the different
-# authentication methods -- refer to the "Client Authentication"
-# section in the documentation for a list of which options are
-# available for which authentication methods.
-#
-# Database and user names containing spaces, commas, quotes and other
-# special characters must be quoted. Quoting one of the keywords
-# "all", "sameuser", "samerole" or "replication" makes the name lose
-# its special character, and just match a database or username with
-# that name.
-#
-# This file is read on server startup and when the postmaster receives
-# a SIGHUP signal. If you edit the file on a running system, you have
-# to SIGHUP the postmaster for the changes to take effect. You can
-# use "pg_ctl reload" to do that.
-
-# Put your actual configuration here
+# TYPE DATABASE USER ADDRESS METHOD
+# actual configuration
host all all 0.0.0.0/0 md5
-# ----------------------------------
-# If you want to allow non-local connections, you need to add more
-# "host" records. In that case you will also need to make PostgreSQL
-# listen on a non-local interface via the listen_addresses
-# configuration parameter, or via the -i or -h command line switches.
-
-# DO NOT DISABLE!
-# If you change this first entry you will need to make sure that the
-# database superuser can access the database using some other method.
-# Noninteractive access to all databases is required during automatic
-# maintenance (custom daily cronjobs, replication, and similar tasks).
-#
-# Database administrative login by Unix domain socket
+# defaults
local all postgres peer
-# TYPE DATABASE USER ADDRESS METHOD
-# "local" is for Unix domain socket connections only
local all all peer
-# IPv4 local connections:
host all all 127.0.0.1/32 md5
-# IPv6 local connections:
host all all ::1/128 md5
-# Allow replication connections from localhost, by a user with the
-# replication privilege.
-#local replication postgres peer
-#host replication postgres 127.0.0.1/32 md5
-#host replication postgres ::1/128 md5
diff --git a/src/bin/client.rs b/src/bin/client.rs
index cbc7302..a91c2dc 100644
--- a/src/bin/client.rs
+++ b/src/bin/client.rs
@@ -1,11 +1,11 @@
+#[macro_use]
+extern crate serde;
+
extern crate clap;
extern crate serde_json;
extern crate space;
extern crate toml;
-#[macro_use]
-extern crate serde_derive;
-
use clap::{App, SubCommand};
use std::fs::File;
use std::io;
diff --git a/src/bin/migrate.rs b/src/bin/migrate.rs
index 8d269a4..f19a766 100644
--- a/src/bin/migrate.rs
+++ b/src/bin/migrate.rs
@@ -6,9 +6,4 @@ use space::math::get_db_url;
fn main() {
let connection = PgConnection::establish(&get_db_url()).expect("Cannot connect");
migrations_internals::run_pending_migrations(&connection).expect("Cannot run migrations");
-
- //migrations_internals::revert_latest_migration(&connection)
- // .expect("Cannot revert migrations");
- //migrations_internals::revert_latest_migration(&connection)
- // .expect("Cannot revert migrations");
}
diff --git a/src/lib.rs b/src/lib.rs
index 26dee5c..b6cf4bc 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,5 +1,6 @@
#[macro_use]
-extern crate serde_derive;
+extern crate serde;
+
#[macro_use]
extern crate diesel;
diff --git a/src/mass.rs b/src/mass.rs
index ed859a4..cbac721 100644
--- a/src/mass.rs
+++ b/src/mass.rs
@@ -26,9 +26,10 @@ pub struct Mass {
pub effects: Effects,
}
-#[derive(Queryable)]
+#[derive(Queryable, Insertable)]
+#[table_name = "db_masses"]
pub struct MassEntry {
- pub id: i32,
+ pub id: Option<i32>,
pub name: String,
pub pos_x: f64,
pub pos_y: f64,
@@ -39,17 +40,16 @@ pub struct MassEntry {
pub type_data: serde_json::Value,
}
-#[derive(Insertable)]
-#[table_name = "db_masses"]
-pub struct NewMassEntry {
- pub name: String,
- pub pos_x: f64,
- pub pos_y: f64,
- pub pos_z: f64,
- pub vel_x: f64,
- pub vel_y: f64,
- pub vel_z: f64,
- pub type_data: serde_json::Value,
+impl MassEntry {
+ pub fn to_mass(&self) -> Mass {
+ Mass {
+ position: Vector::new(self.pos_x, self.pos_y, self.pos_z),
+ velocity: Vector::new(self.vel_x, self.vel_y, self.vel_z),
+ mass_type: serde_json::from_str(&serde_json::to_string(&self.type_data).unwrap())
+ .unwrap(),
+ effects: Effects::new(),
+ }
+ }
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
@@ -327,8 +327,9 @@ impl Mass {
}
}
- pub fn to_new_mass_entry(&self, name: String) -> NewMassEntry {
- NewMassEntry {
+ pub fn to_mass_entry(&self, name: String) -> MassEntry {
+ MassEntry {
+ id: None,
name,
pos_x: self.position.x,
pos_y: self.position.y,
diff --git a/src/schema.rs b/src/schema.rs
index 2bb43ed..71abe49 100644
--- a/src/schema.rs
+++ b/src/schema.rs
@@ -1,6 +1,6 @@
table! {
masses (id) {
- id -> Integer,
+ id -> Nullable<Integer>,
name -> Varchar,
pos_x -> Double,
pos_y -> Double,
diff --git a/tests/tests.rs b/tests/tests.rs
index fd8349d..781e365 100644
--- a/tests/tests.rs
+++ b/tests/tests.rs
@@ -529,14 +529,15 @@ mod tests {
fn test_postgres() {
let connection = PgConnection::establish(&get_db_url()).expect("Cannot connect");
- let masses = db_masses
+ let size = db_masses
.load::<MassEntry>(&connection)
- .expect("Cannot query, probably no migrations, run 'cargo run --bin migrate'");
- let size = masses.len();
- let name = String::from("test");
+ .expect("Cannot query, probably no migrations, run 'cargo run --bin migrate'")
+ .len();
+ let name = String::from("test");
+ let mass = Mass::new_astroid();
diesel::insert_into(db_masses)
- .values(&Mass::new_astroid().to_new_mass_entry(name.clone()))
+ .values(&mass.to_mass_entry(name.clone()))
.execute(&connection)
.expect("Cannot insert");
@@ -547,6 +548,13 @@ mod tests {
assert!(len == size + 1);
+ let db_mass = db_masses
+ .filter(dsl::name.eq(name.clone()))
+ .load::<MassEntry>(&connection)
+ .expect("Cannot filter");
+
+ assert!(mass.position.x == db_mass[0].pos_x);
+
diesel::delete(db_masses.filter(dsl::name.eq(name)))
.execute(&connection)
.expect("Cannot delete");