Added Functionality To PowerItem Endpoint

TODO: Change "addMultiple" to not require a map. That only exists so I could import easily from my old project.
This commit is contained in:
Annika Merris 2024-01-28 13:57:25 -05:00
parent d52d9968ba
commit 1420b14565
7 changed files with 373 additions and 95 deletions

65
main.go
View file

@ -1,41 +1,52 @@
package main
import (
"context"
"fmt"
"isl-api/Controllers"
"isl-api/Services"
"isl-api/sql/powerItem"
"log"
"net/http"
"github.com/jackc/pgx/v4"
"github.com/julienschmidt/httprouter"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", index)
Controllers.SetPowerItemEndpoints(mux, "powerItem")
deps := dependencies{}
deps.initializeDependencies()
err := http.ListenAndServe(":3000", mux)
deps.router.HandlerFunc("GET", "/", index)
err := http.ListenAndServe(":3000", deps.router)
log.Fatal(err)
}
func index(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
// Common code for all requests can go here...
switch r.Method {
case http.MethodGet:
// Handle the GET request...
case http.MethodPost:
// Handle the POST request...
case http.MethodOptions:
w.Header().Set("Allow", "GET, POST, OPTIONS")
w.WriteHeader(http.StatusNoContent)
default:
w.Header().Set("Allow", "GET, POST, OPTIONS")
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
}
type dependencies struct {
router *httprouter.Router
postgresConnection *pgx.Conn
context context.Context
powerItemQuerier *powerItem.DBQuerier
powerItemService *Services.PowerItemService
powerItemController *Controllers.PowerItemController
}
func (d *dependencies) initializeDependencies() error {
var err error
d.router = httprouter.New()
d.context = context.Background()
d.postgresConnection, err = pgx.Connect(d.context, "postgres://isl:development@localhost:5432/isl")
if err != nil {
return err
}
d.powerItemQuerier = powerItem.NewQuerier(d.postgresConnection)
d.powerItemService = Services.NewPowerItemService(d.powerItemQuerier)
d.powerItemController = Controllers.NewPowerItemController(d.router, d.powerItemService)
return nil
}
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Index")
}