summaryrefslogtreecommitdiff
path: root/src/mass.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mass.rs')
-rw-r--r--src/mass.rs31
1 files changed, 16 insertions, 15 deletions
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,