Files
crowsnest/golang/cmd/frontend/main.go

64 lines
1.1 KiB
Go
Raw Normal View History

2024-12-20 01:15:56 +01:00
package main
import (
2025-01-06 19:58:01 +01:00
"crowsnest/internal/model/database"
2025-01-03 01:00:06 +01:00
"database/sql"
2025-01-11 01:00:32 +01:00
"fmt"
2025-01-02 16:21:02 +01:00
"log"
"net/http"
2025-01-06 19:58:01 +01:00
"os"
2025-01-03 01:00:06 +01:00
2025-01-06 19:58:01 +01:00
_ "github.com/lib/pq"
2024-12-20 01:15:56 +01:00
)
2025-01-03 01:00:06 +01:00
type App struct {
2025-01-06 19:58:01 +01:00
articles *database.ArticleModel
2025-01-03 01:00:06 +01:00
}
2025-01-02 16:21:02 +01:00
2024-12-20 01:15:56 +01:00
func main() {
2025-01-06 19:58:01 +01:00
// collect environement variables
2025-01-11 01:00:32 +01:00
dbPass := os.Getenv("DB_PASS")
if dbPass == "" {
log.Fatal("empty DB_PASS")
}
dbHost := os.Getenv("DB_HOST")
if dbHost == "" {
log.Fatal("empty DB_HOST")
}
dbPort := os.Getenv("DB_PORT")
if dbPort == "" {
dbPort = "5432"
}
dbUser := os.Getenv("DB_USER")
if dbUser == "" {
dbUser = "postgres"
}
dbName := os.Getenv("DB_NAME")
2025-01-06 19:58:01 +01:00
// connect to database
2025-01-11 01:00:32 +01:00
databaseURL := fmt.Sprintf("user=%s password=%s dbname=%s host=%s port=%s sslmode=disable",
dbUser, dbPass, dbName, dbHost, dbPort)
2025-01-07 09:32:57 +01:00
db, err := sql.Open("postgres", databaseURL)
if err != nil {
log.Fatal(err)
2025-01-06 19:58:01 +01:00
}
2025-01-07 09:32:57 +01:00
defer db.Close()
2025-01-11 01:00:32 +01:00
if err = db.Ping(); err != nil {
log.Fatal(err)
}
2025-01-06 19:58:01 +01:00
// define app
app := &App{
2025-01-07 09:32:57 +01:00
articles: &database.ArticleModel{DB: db},
2025-01-06 19:58:01 +01:00
}
// start web server
server := http.Server{
Addr: ":8080",
Handler: app.routes(),
}
log.Println("server started, listening on :8080")
server.ListenAndServe()
2024-12-20 01:15:56 +01:00
}