Skip to content

Commit

Permalink
👔 Add small grace period for valid live state
Browse files Browse the repository at this point in the history
  • Loading branch information
rster2002 committed Aug 12, 2024
1 parent c3eae58 commit 949f665
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions src/modules/state/models/resolvers/live_state_resolver.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
pub mod organic_location;

Check warning on line 1 in src/modules/state/models/resolvers/live_state_resolver.rs

View workflow job for this annotation

GitHub Actions / cargo fmt

Diff in /home/runner/work/ed-journals/ed-journals/src/modules/state/models/resolvers/live_state_resolver.rs
pub mod touchdown_location;

use std::ops::Sub;
use crate::backpack::Backpack;
use crate::cargo::Cargo;
use crate::journal::{JournalEvent, JournalEventKind};
Expand All @@ -16,7 +17,7 @@ use crate::state::models::resolvers::live_state_resolver::organic_location::Orga
use crate::state::models::resolvers::live_state_resolver::touchdown_location::TouchdownLocation;
use crate::state::traits::state_resolver::StateResolver;
use crate::status::{PlanetStatus, ShipStatus, Status};

Check warning on line 19 in src/modules/state/models/resolvers/live_state_resolver.rs

View workflow job for this annotation

GitHub Actions / cargo fmt

Diff in /home/runner/work/ed-journals/ed-journals/src/modules/state/models/resolvers/live_state_resolver.rs
use chrono::{DateTime, Utc};
use chrono::{DateTime, TimeDelta, Utc};
use serde::{Deserialize, Serialize};

/// Life state tracks state from the logs and combines them with state from live files like for
Expand Down Expand Up @@ -172,7 +173,7 @@ impl LiveStateResolver {
pub fn valid_status(&self, timestamp: &DateTime<Utc>) -> Option<&Status> {
let status = self.status.as_ref()?;

if timestamp >= &status.timestamp {
if Self::is_valid_live_state(&status.timestamp, &timestamp) {
Some(status)
} else {
None
Expand All @@ -183,7 +184,7 @@ impl LiveStateResolver {
pub fn valid_module_info(&self, timestamp: &DateTime<Utc>) -> Option<&ModulesInfo> {
let module_info = self.modules_info.as_ref()?;

if timestamp >= &module_info.timestamp {
if Self::is_valid_live_state(&module_info.timestamp, &timestamp) {
Some(module_info)
} else {
None
Expand All @@ -194,7 +195,7 @@ impl LiveStateResolver {
pub fn valid_cargo(&self, timestamp: &DateTime<Utc>) -> Option<&Cargo> {
let cargo = self.cargo.as_ref()?;

if timestamp >= &cargo.timestamp {
if Self::is_valid_live_state(&cargo.timestamp, &timestamp) {
Some(cargo)
} else {
None
Expand All @@ -205,7 +206,7 @@ impl LiveStateResolver {
pub fn valid_nav_route(&self, timestamp: &DateTime<Utc>) -> Option<&NavRoute> {
let nav_route = self.nav_route.as_ref()?;

if timestamp >= &nav_route.timestamp {
if Self::is_valid_live_state(&nav_route.timestamp, &timestamp) {
Some(nav_route)
} else {
None
Expand All @@ -216,7 +217,7 @@ impl LiveStateResolver {
pub fn valid_outfitting(&self, timestamp: &DateTime<Utc>) -> Option<&Outfitting> {
let outfitting = self.outfitting.as_ref()?;

if timestamp >= &outfitting.timestamp {
if Self::is_valid_live_state(&outfitting.timestamp, &timestamp) {
Some(outfitting)
} else {
None
Expand All @@ -227,7 +228,7 @@ impl LiveStateResolver {
pub fn valid_shipyard(&self, timestamp: &DateTime<Utc>) -> Option<&Shipyard> {
let shipyard = self.shipyard.as_ref()?;

if timestamp >= &shipyard.timestamp {
if Self::is_valid_live_state(&shipyard.timestamp, &timestamp) {
Some(shipyard)
} else {
None
Expand All @@ -238,7 +239,7 @@ impl LiveStateResolver {
pub fn valid_market(&self, timestamp: &DateTime<Utc>) -> Option<&Market> {
let market = self.market.as_ref()?;

if timestamp >= &market.timestamp {
if Self::is_valid_live_state(&market.timestamp, &timestamp) {
Some(market)
} else {
None
Expand All @@ -249,7 +250,7 @@ impl LiveStateResolver {
pub fn valid_backpack(&self, timestamp: &DateTime<Utc>) -> Option<&Backpack> {
let backpack = self.backpack.as_ref()?;

if timestamp >= &backpack.timestamp {
if Self::is_valid_live_state(&backpack.timestamp, &timestamp) {
Some(backpack)
} else {
None
Expand All @@ -260,7 +261,7 @@ impl LiveStateResolver {
pub fn valid_ship_locker(&self, timestamp: &DateTime<Utc>) -> Option<&ShipLocker> {
let ship_locker = self.ship_locker.as_ref()?;

if timestamp >= &ship_locker.timestamp {
if Self::is_valid_live_state(&ship_locker.timestamp, &timestamp) {
Some(ship_locker)
} else {
None
Expand Down Expand Up @@ -301,4 +302,11 @@ impl LiveStateResolver {
.planet_status
.as_ref()
}

Check warning on line 304 in src/modules/state/models/resolvers/live_state_resolver.rs

View workflow job for this annotation

GitHub Actions / cargo fmt

Diff in /home/runner/work/ed-journals/ed-journals/src/modules/state/models/resolvers/live_state_resolver.rs

fn is_valid_live_state(live_timestamp: &DateTime<Utc>, log_timestamp: &DateTime<Utc>) -> bool {
let grace_period = TimeDelta::new(2, 0)
.expect("This should always complete");

&log_timestamp.sub(grace_period) >= live_timestamp
}
}

0 comments on commit 949f665

Please sign in to comment.