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() { deps := dependencies{} deps.initializeDependencies() deps.router.HandlerFunc("GET", "/", index) err := http.ListenAndServe(":3000", deps.router) log.Fatal(err) } 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") }