2024-01-26 17:11:42 -05:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
2024-01-28 13:57:25 -05:00
|
|
|
"context"
|
|
|
|
|
"fmt"
|
2024-01-26 17:11:42 -05:00
|
|
|
"isl-api/Controllers"
|
2024-01-28 13:57:25 -05:00
|
|
|
"isl-api/Services"
|
|
|
|
|
"isl-api/sql/powerItem"
|
2024-01-26 17:11:42 -05:00
|
|
|
"log"
|
|
|
|
|
"net/http"
|
2024-01-28 13:57:25 -05:00
|
|
|
|
|
|
|
|
"github.com/jackc/pgx/v4"
|
|
|
|
|
"github.com/julienschmidt/httprouter"
|
2024-01-31 14:51:42 -05:00
|
|
|
"github.com/spf13/viper"
|
2024-01-26 17:11:42 -05:00
|
|
|
)
|
|
|
|
|
|
2024-01-31 14:51:42 -05:00
|
|
|
var conf *EnvConfigs
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
setupConfig()
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-26 17:11:42 -05:00
|
|
|
func main() {
|
2024-01-28 13:57:25 -05:00
|
|
|
deps := dependencies{}
|
|
|
|
|
deps.initializeDependencies()
|
|
|
|
|
|
|
|
|
|
deps.router.HandlerFunc("GET", "/", index)
|
2024-01-26 17:11:42 -05:00
|
|
|
|
2024-01-31 14:51:42 -05:00
|
|
|
err := http.ListenAndServe(fmt.Sprintf(":%v", conf.HttpPort), deps.router)
|
2024-01-26 17:11:42 -05:00
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-31 14:51:42 -05:00
|
|
|
func setupConfig() {
|
|
|
|
|
viper.AddConfigPath(".")
|
|
|
|
|
viper.SetConfigName(".env")
|
|
|
|
|
viper.SetConfigType("env")
|
|
|
|
|
|
|
|
|
|
viper.SetEnvPrefix("isl_api")
|
|
|
|
|
viper.AutomaticEnv()
|
|
|
|
|
|
|
|
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
|
|
|
fmt.Printf("Error reading env file: %v\n", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := viper.Unmarshal(&conf); err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-28 13:57:25 -05:00
|
|
|
type dependencies struct {
|
|
|
|
|
router *httprouter.Router
|
|
|
|
|
postgresConnection *pgx.Conn
|
|
|
|
|
context context.Context
|
|
|
|
|
powerItemQuerier *powerItem.DBQuerier
|
|
|
|
|
powerItemService *Services.PowerItemService
|
|
|
|
|
powerItemController *Controllers.PowerItemController
|
|
|
|
|
}
|
2024-01-26 17:11:42 -05:00
|
|
|
|
2024-01-28 13:57:25 -05:00
|
|
|
func (d *dependencies) initializeDependencies() error {
|
|
|
|
|
var err error
|
2024-01-26 17:11:42 -05:00
|
|
|
|
2024-01-28 13:57:25 -05:00
|
|
|
d.router = httprouter.New()
|
|
|
|
|
d.context = context.Background()
|
2024-01-31 14:51:42 -05:00
|
|
|
d.postgresConnection, err = pgx.Connect(d.context, conf.ConnectionString)
|
2024-01-28 13:57:25 -05:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
2024-01-26 17:11:42 -05:00
|
|
|
}
|
2024-01-28 13:57:25 -05:00
|
|
|
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")
|
2024-01-26 17:11:42 -05:00
|
|
|
}
|