4
1
Fork 0
backend-core/main.go

71 lines
1.1 KiB
Go
Raw Normal View History

package main
import (
"database/sql"
"log"
"net/http"
2019-02-18 23:43:00 +08:00
"os"
2019-02-18 23:43:00 +08:00
"github.com/joho/godotenv"
_ "github.com/lib/pq"
2019-10-23 13:49:43 +08:00
"github.com/nats-io/go-nats"
)
var listen string
var postgres string
2019-08-31 23:32:42 +08:00
func init() {
2019-02-18 23:43:00 +08:00
// Load .env
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
2019-08-31 23:32:42 +08:00
}
func main() {
listen = os.Getenv("LISTEN")
2019-08-31 23:03:56 +08:00
// Database
db := connect()
2019-10-23 13:49:43 +08:00
// NATs
nc := connectNats()
2019-08-31 23:03:56 +08:00
// Handler
h := NewHandler(db, nc)
2019-08-31 23:03:56 +08:00
// 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)
}
2019-08-31 23:03:56 +08:00
err = db.Ping()
if err != nil {
log.Fatal(err)
}
2019-08-31 23:03:56 +08:00
return db
}
func connectNats() *nats.Conn {
2019-10-23 13:49:43 +08:00
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
}