add general maintenance script to always run in prod
This commit is contained in:
parent
9940e9dd90
commit
679b49ff88
2 changed files with 25 additions and 1 deletions
|
@ -66,6 +66,18 @@ async fn main() {
|
||||||
cmd_prune().await;
|
cmd_prune().await;
|
||||||
tokio::time::sleep(tokio::time::Duration::from_secs(60 * 5)).await;
|
tokio::time::sleep(tokio::time::Duration::from_secs(60 * 5)).await;
|
||||||
},
|
},
|
||||||
|
"maintenance" => {
|
||||||
|
println!("Running maintenance tasks...");
|
||||||
|
println!("Checking if DB is migrated...");
|
||||||
|
if !migrations::is_migrated().await {
|
||||||
|
println!("DB is not migrated, running migrations...");
|
||||||
|
cmd_migrate().await;
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Running prune...");
|
||||||
|
cmd_prune().await;
|
||||||
|
println!("Done!");
|
||||||
|
}
|
||||||
"migrate" => cmd_migrate().await,
|
"migrate" => cmd_migrate().await,
|
||||||
_ => {
|
_ => {
|
||||||
println!("Unknown command: {}", command);
|
println!("Unknown command: {}", command);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::PG;
|
use crate::PG;
|
||||||
use sqlx::query;
|
use sqlx::{query, Row};
|
||||||
|
|
||||||
pub async fn cmd_migrate() {
|
pub async fn cmd_migrate() {
|
||||||
println!("Migrating database...");
|
println!("Migrating database...");
|
||||||
|
@ -173,3 +173,15 @@ async fn migrate_analytics() {
|
||||||
|
|
||||||
println!("ANALYTICS => done!");
|
println!("ANALYTICS => done!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn is_migrated() -> bool {
|
||||||
|
let pool = PG.get().await;
|
||||||
|
|
||||||
|
let tables: i64 = query("SELECT count(1) FROM pg_tables WHERE schemaname = 'public' AND tablename IN ('players', 'vehicles', 'classes', 'analytics');")
|
||||||
|
.fetch_one(pool)
|
||||||
|
.await
|
||||||
|
.unwrap()
|
||||||
|
.get(0);
|
||||||
|
|
||||||
|
tables == 4
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue