1
0
mirror of https://github.com/alm494/sql_proxy.git synced 2025-10-08 22:01:51 +02:00
Files
sql_proxy/src/main.go
2025-02-16 16:06:08 +03:00

66 lines
2.2 KiB
Go

package main
import (
"fmt"
"net/http"
"os"
"sql-proxy/src/app"
"sql-proxy/src/db"
"sql-proxy/src/handlers"
"github.com/gorilla/mux"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/sirupsen/logrus"
)
func main() {
var err error
// Application params taken from OS environment
app.Log.SetLevel(logrus.Level(app.GetIntEnvOrDefault("LOG_LEVEL", 2)))
bindAddress := os.Getenv("BIND_ADDR")
bindPort := app.GetIntEnvOrDefault("BIND_PORT", 8080)
db.MaxRows = app.GetIntEnvOrDefault("MAX_ROWS", 10000)
tlsCert := os.Getenv("TLS_CERT")
tlsKey := os.Getenv("TLS_KEY")
// Scheduled maintenance task
go db.Handler.RunMaintenance()
router := mux.NewRouter()
router.HandleFunc("/api/v1/connection/create", handlers.CreateConnection).Methods("POST")
router.HandleFunc("/api/v1/connection/delete", handlers.CloseConnection).Methods("DELETE")
router.HandleFunc("/api/v1/query/select", handlers.SelectQuery).Methods("GET")
router.HandleFunc("/api/v1/query/execute", handlers.ExecuteQuery).Methods("POST")
router.HandleFunc("/api/v1/statement/prepare", handlers.PrepareStatement).Methods("POST")
router.HandleFunc("/api/v1/statement/select", handlers.SelectStatement).Methods("GET")
router.HandleFunc("/api/v1/statement/execute", handlers.ExecuteStatement).Methods("POST")
router.HandleFunc("/healthz", handlers.Healthz).Methods("GET")
router.HandleFunc("/readyz", handlers.Readyz).Methods("GET")
router.HandleFunc("/livez", handlers.Livez).Methods("GET")
router.Handle("/metrics", promhttp.Handler())
app.Log.WithFields(logrus.Fields{
"build_version": app.BuildVersion,
"build_time": app.BuildTime,
}).Info("Starting server sql-proxy:")
app.Log.WithFields(logrus.Fields{
"bind_port": bindPort,
"bind_address": bindAddress,
"tls_cert": tlsCert,
"tls_key": tlsKey,
}).Info("Server started with the following parameters:")
addr := fmt.Sprintf("%s:%d", bindAddress, bindPort)
if len(tlsCert) > 0 && len(tlsKey) > 0 {
err = http.ListenAndServeTLS(addr, tlsCert, tlsKey, router)
} else {
err = http.ListenAndServe(addr, router)
}
if err != nil {
app.Log.WithError(err).Fatal("Fatal error occurred, service stopped")
}
}