53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
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)
|
|
}
|