Move starting the engine behind run cli argument.

This commit is contained in:
Kalzu Rekku
2026-07-17 23:43:32 +03:00
parent 7579c68524
commit d66f2d9866
+53 -32
View File
@@ -2,6 +2,7 @@ package main
import ( import (
"context" "context"
"fmt"
"log" "log"
"os" "os"
"os/signal" "os/signal"
@@ -12,47 +13,67 @@ import (
func main() { func main() {
log.SetFlags(log.LstdFlags | log.Lmicroseconds) log.SetFlags(log.LstdFlags | log.Lmicroseconds)
log.Println("=== Bybit BTC/USDT Tick Ingest Engine ===")
// Load configuration // Load configuration
cfg, err := LoadConfig("config.json") cfg, err := LoadConfig("config.json")
if err != nil { if err != nil {
log.Fatalf("Config error: %v", err) log.Fatalf("Config error: %v", err)
} }
if len(os.Args) < 2 {
printUsage()
return
}
command := os.Args[1]
switch command {
case "run":
runEngine(cfg)
case "recover":
log.Println("=== Starting Recovery Mode ===")
sm, err := NewStorageManager(cfg)
if err != nil {
log.Fatal(err)
}
if err := sm.StartupRecovery(); err != nil {
log.Fatal(err)
}
log.Println("Recovery completed.")
case "maintain":
log.Println("=== Starting Manual Maintenance ===")
sm, err := NewStorageManager(cfg)
if err != nil {
log.Fatal(err)
}
sm.RunHourlyMaintenance()
log.Println("Maintenance completed.")
case "help":
printUsage()
default:
log.Printf("Unknown command: %s", command)
printUsage()
}
}
func printUsage() {
fmt.Println("Usage: engine [command]")
fmt.Println("\nCommands:")
fmt.Println(" run Start the WebSocket ingestor and processing engine")
fmt.Println(" recover Run startup recovery to migrate stale ticks")
fmt.Println(" maintain Run a single maintenance cycle (cleanup/retention)")
fmt.Println(" help Show this help message")
}
func runEngine(cfg Config) {
log.Println("=== Bybit BTC/USDT Tick Ingest Engine ===")
log.Printf("Config: symbol=%s, hot_retention=%dh, feature_retention=%dd", log.Printf("Config: symbol=%s, hot_retention=%dh, feature_retention=%dd",
cfg.Symbol, cfg.HotRetentionHours, cfg.FeatureRetentionDays) cfg.Symbol, cfg.HotRetentionHours, cfg.FeatureRetentionDays)
if len(os.Args) > 1 {
switch os.Args[1] {
case "recover":
sm, err := NewStorageManager(cfg)
if err != nil {
log.Fatal(err)
}
if err := sm.StartupRecovery(); err != nil {
log.Fatal(err)
}
log.Println("Recovery completed.")
return
case "maintain":
sm, err := NewStorageManager(cfg)
if err != nil {
log.Fatal(err)
}
sm.RunHourlyMaintenance()
log.Println("Maintenance completed.")
return
}
}
// Initialize storage (creates dirs, databases, tables) // Initialize storage (creates dirs, databases, tables)
sm, err := NewStorageManager(cfg) sm, err := NewStorageManager(cfg)
if err != nil { if err != nil {