4
1
Fork 0
backend-core/main.go

71 lines
1.1 KiB
Go

package main
import (
"database/sql"
"log"
"net/http"
"os"
"github.com/joho/godotenv"
_ "github.com/lib/pq"
"github.com/nats-io/go-nats"
)
var listen string
var postgres string
func init() {
// Load .env
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
}
func main() {
listen = os.Getenv("LISTEN")
// Database
db := connect()
// NATs
nc := connectNats()
// Handler
h := NewHandler(db, nc)
// Routes
router := NewRouter(h)
log.Printf("starting server on %s", listen)
log.Fatal(http.ListenAndServe(listen, router))
}
func connect() *sql.DB {
postgres = os.Getenv("POSTGRES")
// Open postgres
log.Printf("connecting to postgres %s", postgres)
db, err := sql.Open("postgres", postgres)
if err != nil {
log.Fatal(err)
}
err = db.Ping()
if err != nil {
log.Fatal(err)
}
return db
}
func connectNats() *nats.Conn {
natsHost := os.Getenv("NATS")
var nc *nats.Conn
var err error
if natsHost != "" {
log.Printf("connecting to nats %s", natsHost)
nc, err = nats.Connect(natsHost)
if err != nil {
log.Fatal(err)
}
}
return nc
}