package main import ( "database/sql" "fmt" "net/http" "os" ctrlrs "git.kealoha.me/lks/lenslocked/controllers" "git.kealoha.me/lks/lenslocked/models" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" _ "github.com/jackc/pgx/v4/stdlib" ) func notFoundHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf8") w.WriteHeader(http.StatusNotFound) fmt.Fprint(w, "404 page not found") } func ConnectDB() *sql.DB { db, err := sql.Open("pgx", os.Getenv("LENSLOCKED_DB_STRING")) if err != nil { panic(fmt.Sprint("Error connecting to database: %w", err)) } err = db.Ping() if err != nil { panic(fmt.Sprint("Error connecting to database: %w", err)) } return db } func main() { db := ConnectDB() defer db.Close() userService := models.UserService{DB: db} var usersCtrlr ctrlrs.Users = ctrlrs.WithStaticTemplate(&userService, "signup.gohtml", "tailwind.gohtml") r := chi.NewRouter() r.Use(middleware.Logger) r.Get("/", ctrlrs.StaticTemplate("home.gohtml", "tailwind.gohtml")) r.Get("/contact", ctrlrs.StaticTemplate("contact.gohtml", "tailwind.gohtml")) r.Get("/faq", ctrlrs.FAQ("faq.gohtml", "tailwind.gohtml")) r.Get("/signup", usersCtrlr.New) r.Post("/signup", usersCtrlr.Create) r.NotFound(notFoundHandler) fmt.Println("Starting the server on :3000...") http.ListenAndServe(":3000", r) }