mirror of
https://github.com/csehviktor/status-monitor.git
synced 2025-08-08 18:06:14 +02:00
fix sql
This commit is contained in:
@@ -44,19 +44,31 @@ impl TryFrom<&Row<'_>> for UptimeStorageModel {
|
|||||||
type Error = rusqlite::Error;
|
type Error = rusqlite::Error;
|
||||||
|
|
||||||
fn try_from(row: &Row) -> Result<Self, Self::Error> {
|
fn try_from(row: &Row) -> Result<Self, Self::Error> {
|
||||||
let first_seen: DateTime<Utc> = row.get::<_, String>(1)?.parse().map_err(|e| {
|
let first_seen = DateTime::parse_from_rfc3339(&row.get::<_, String>(2)?)
|
||||||
rusqlite::Error::FromSqlConversionFailure(1, rusqlite::types::Type::Text, Box::new(e))
|
.map(|dt| dt.with_timezone(&Utc))
|
||||||
})?;
|
.map_err(|e| {
|
||||||
|
rusqlite::Error::FromSqlConversionFailure(
|
||||||
|
1,
|
||||||
|
rusqlite::types::Type::Text,
|
||||||
|
Box::new(e),
|
||||||
|
)
|
||||||
|
})?;
|
||||||
|
|
||||||
let last_seen: DateTime<Utc> = row.get::<_, String>(2)?.parse().map_err(|e| {
|
let last_seen = DateTime::parse_from_rfc3339(&row.get::<_, String>(2)?)
|
||||||
rusqlite::Error::FromSqlConversionFailure(2, rusqlite::types::Type::Text, Box::new(e))
|
.map(|dt| dt.with_timezone(&Utc))
|
||||||
})?;
|
.map_err(|e| {
|
||||||
|
rusqlite::Error::FromSqlConversionFailure(
|
||||||
|
2,
|
||||||
|
rusqlite::types::Type::Text,
|
||||||
|
Box::new(e),
|
||||||
|
)
|
||||||
|
})?;
|
||||||
|
|
||||||
Ok(UptimeStorageModel {
|
Ok(UptimeStorageModel {
|
||||||
id: row.get(0)?,
|
id: row.get(0)?,
|
||||||
first_seen,
|
first_seen,
|
||||||
last_seen,
|
last_seen,
|
||||||
message_count: row.get(1)?,
|
message_count: row.get(3)?,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ impl SQLiteRepository {
|
|||||||
message_count INTEGER NOT NULL DEFAULT 0
|
message_count INTEGER NOT NULL DEFAULT 0
|
||||||
) STRICT;
|
) STRICT;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS agents (
|
CREATE TABLE IF NOT EXISTS messages (
|
||||||
id TEXT PRIMARY KEY AUTO_INCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
agent_id TEXT NOT NULL,
|
agent_id TEXT NOT NULL,
|
||||||
message TEXT NOT NULL,
|
message TEXT NOT NULL,
|
||||||
timestamp TEXT NOT NULL
|
timestamp TEXT NOT NULL,
|
||||||
|
|
||||||
FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE CASCADE
|
FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE CASCADE
|
||||||
) STRICT;
|
) STRICT;
|
||||||
@@ -101,7 +101,7 @@ impl StorageRepository for SQLiteRepository {
|
|||||||
|
|
||||||
let (sql, params) = if let Some(duration) = duration {
|
let (sql, params) = if let Some(duration) = duration {
|
||||||
(
|
(
|
||||||
"SELECT agent_id, message, timestamp FROM messages WHERE agent_id = ? AND timestamp <= ?",
|
"SELECT agent_id, message, timestamp FROM messages WHERE agent_id = ? AND timestamp >= ?",
|
||||||
vec![agent.to_string(), duration.to_rfc3339()],
|
vec![agent.to_string(), duration.to_rfc3339()],
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user