package main import ( "crowsnest/internal/model/database" "database/sql" "errors" "log" "net/http" "os" _ "github.com/lib/pq" _ "github.com/mattn/go-sqlite3" ) type App struct { articles *database.ArticleModel } func main() { // collect environement variables databaseURL := os.Getenv("DB_URL") dbDriver := os.Getenv("DB_DRIVER") // connect to database var db *sql.DB var err error switch { case dbDriver == "sqlite3": db, err = sql.Open("sqlite3", databaseURL) if err != nil { log.Fatal(err) } default: log.Fatal(errors.New("given DB_DRIVER is not supported")) } // define app app := &App{ articles: &database.ArticleModel{DB: db, DbDriver: dbDriver}, } // start web server server := http.Server{ Addr: ":8080", Handler: app.routes(), } log.Println("server started, listening on :8080") server.ListenAndServe() }