From f43e2630a217968292cda809e73d638340b9a75c Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 5 May 2025 23:12:07 +0000 Subject: [PATCH] Added base server file --- cmd/server/main.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 cmd/server/main.go diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..272f9ad --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "database/sql" + "flag" + "fmt" + "log" + "net/http" + + _ "github.com/mattn/go-sqlite3" +) + +func main() { + // Command line flags + dbPath := flag.String("db", "data.db", "path to SQLite database") + listenAddr := flag.String("listen", "8080", "HTTP server listen address") + flag.Parse() + + // Initialize database connection + db, err := sql.Open("sqlite3", *dbPath) + if err != nil { + log.Fatalf("Failed to open database: %v", err) + } + defer db.Close() + + // Test database connection + if err := db.Ping(); err != nil { + log.Fatalf("Failed to ping database: %v", err) + } + + // Initialize HTTP server + mux := http.NewServeMux() + + // POST /trades endpoint + mux.HandleFunc("POST /trades", func(w http.ResponseWriter, r *http.Request) { + // TODO: Write code here + w.WriteHeader(http.StatusOK) + }) + + // GET /stats/{acc} endpoint + mux.HandleFunc("GET /stats/{acc}", func(w http.ResponseWriter, r *http.Request) { + // TODO: Write code here + w.WriteHeader(http.StatusOK) + }) + + // GET /healthz endpoint + mux.HandleFunc("GET /healthz", func(w http.ResponseWriter, r *http.Request) { + // TODO: Write code here + // 1. Check database connection + // 2. Return health status + w.WriteHeader(http.StatusOK) + }) + + // Start server + serverAddr := fmt.Sprintf(":%s", *listenAddr) + log.Printf("Starting server on %s", serverAddr) + if err := http.ListenAndServe(serverAddr, mux); err != nil { + log.Fatalf("Server failed: %v", err) + } +}