Value Services implementiert Teil 1
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"log"
|
||||
"database/sql"
|
||||
"github.com/spf13/viper"
|
||||
_ "github.com/lib/pq"
|
||||
)
|
||||
|
||||
func InitDatabase(config *viper.Viper) *sql.DB {
|
||||
connectionString := config.GetString("database.connection_string")
|
||||
driverName := config.GetString("database.driver_name")
|
||||
if connectionString == "" {
|
||||
log.Fatalf("Database connection string is missing")
|
||||
}
|
||||
dbHandler, err := sql.Open(driverName, connectionString)
|
||||
if err != nil {
|
||||
log.Fatalf("Error while initializing database: %v", err)
|
||||
}
|
||||
err = dbHandler.Ping()
|
||||
if err != nil {
|
||||
dbHandler.Close()
|
||||
log.Fatalf("Error while validating database: %v", err)
|
||||
}
|
||||
return dbHandler
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/spf13/viper"
|
||||
|
||||
"simplycpq/controller"
|
||||
"simplycpq/repositories"
|
||||
"simplycpq/services"
|
||||
)
|
||||
|
||||
type HttpServer struct {
|
||||
config *viper.Viper
|
||||
router *gin.Engine
|
||||
dbHandler *sql.DB
|
||||
valueController *controller.ValueController
|
||||
}
|
||||
|
||||
func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
|
||||
|
||||
// repository initialisation:
|
||||
valueRepository := repositories.NewValueRepository(dbHandler)
|
||||
// service initialisation:
|
||||
valueService := services.NewValueService(valueRepository)
|
||||
// controller initialisation:
|
||||
valueController := controller.NewValueController(valueService)
|
||||
|
||||
// Service API
|
||||
router := gin.Default()
|
||||
router.Use(cors.Default())
|
||||
router.GET("/test", Test)
|
||||
|
||||
// Value centric routing
|
||||
router.POST("/createPropertyTypeGroup", valueController.CreatePropertyTypeGroup) // create PropertyTypeGroup
|
||||
router.PUT("/updatePropertyTypeGroup", valueController.UpdatePropertyTypeGroup) // update PropertyTypeGroup
|
||||
router.DELETE("/deletePropertyTypeGroup/:id", valueController.DeletePropertyTypeGroup) // delete PropertyTypeGroup
|
||||
router.GET("/getPropertyTypeGroup/:id", valueController.GetPropertyTypeGroup) // get PropertyTypeGroup by id
|
||||
router.GET("/getPropertyTypeGroupsByParentId/:parentId", valueController.GetPropertyTypeGroupsByParentId) // get all PropertyTypeGroups by parent ID
|
||||
router.DELETE("/deletePropertyTypeFromPropertyTypeGroupId/:propertyTypeGroupId", valueController.DeletePropertyTypeFromPropertyTypeGroupId) // delete PropertyType from PropertyTypeGroup by ID
|
||||
router.POST("/createPropertyType", valueController.CreatePropertyType) // create PropertyType
|
||||
router.PUT("/updatePropertyType", valueController.UpdatePropertyType) // update PropertyType
|
||||
router.DELETE("/deletePropertyType/:id", valueController.DeletePropertyType) // delete PropertyType
|
||||
router.GET("/getPropertyType/:id", valueController.GetPropertyType) // get PropertyType by id
|
||||
router.GET("/getPropertyTypesByGroupId/:groupId", valueController.GetPropertyTypesByGroupId) // get all PropertyTypes by group ID
|
||||
router.POST("/createValueForPropertyTypeId/:propertyTypeId", valueController.CreateValueForPropertyTypeId) // create Value for PropertyType by ID
|
||||
router.DELETE("/deleteValueFromPropertyTypeId/:propertyTypeId", valueController.DeleteValueFromPropertyTypeId) // delete Value from PropertyType by ID
|
||||
router.GET("/getValuesFromPropertyTypeId/:propertyTypeId", valueController.GetValuesFromPropertyTypeId) // get all Values from PropertyType by ID
|
||||
router.GET("/getValuesFromPropertyId/:propertyId", valueController.GetValuesFromPropertyId) // get all Values from Property by ID
|
||||
router.DELETE("/deleteValueFromPropertyId/:propertyId", valueController.DeleteValueFromPropertyId) // delete Value from Property by ID
|
||||
router.GET("/getValue/:id", valueController.GetValue) // get Value by id
|
||||
|
||||
// Product centric routing
|
||||
|
||||
// server
|
||||
return HttpServer{
|
||||
config: config,
|
||||
router: router,
|
||||
dbHandler: dbHandler,
|
||||
valueController: valueController,
|
||||
}
|
||||
}
|
||||
|
||||
func (hs HttpServer) Start() {
|
||||
err := hs.router.Run(hs.config.GetString("http.server_address"))
|
||||
if err != nil {
|
||||
log.Fatalf("Error while starting HTTP server: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func Test(ctx *gin.Context) {
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
"message": "Test",
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user