TP-55555 | crud ingestor
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
create database cybertron_dev;
|
||||||
|
|||||||
1
go.mod
1
go.mod
@@ -28,6 +28,7 @@ require (
|
|||||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
github.com/go-playground/validator/v10 v10.15.5 // indirect
|
github.com/go-playground/validator/v10 v10.15.5 // indirect
|
||||||
github.com/goccy/go-json v0.10.2 // indirect
|
github.com/goccy/go-json v0.10.2 // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
|
|||||||
11
internal/database/product.go
Normal file
11
internal/database/product.go
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cybertron/models/db"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
func InitProductRepository(dbClient *gorm.DB) *gorm.DB {
|
||||||
|
dbClient.AutoMigrate(&db.Product{})
|
||||||
|
return dbClient
|
||||||
|
}
|
||||||
@@ -1,27 +1,45 @@
|
|||||||
package dependencies
|
package dependencies
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"cybertron/internal/database"
|
||||||
|
"cybertron/internal/transport/handler"
|
||||||
|
"cybertron/pkg/db"
|
||||||
"cybertron/pkg/log"
|
"cybertron/pkg/log"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Dependencies struct {
|
type Dependencies struct {
|
||||||
Service *Service
|
Service *Service
|
||||||
DBClient *gorm.DB
|
DBClient *gorm.DB
|
||||||
Logger *zap.Logger
|
Logger *zap.Logger
|
||||||
|
Handler *Handler
|
||||||
|
Repositories *Repositories
|
||||||
}
|
}
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
// Add your service here
|
// Add your service here
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Handler struct {
|
||||||
|
ProductHandler *handler.ProductHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
type Repositories struct {
|
||||||
|
ProductRepository *gorm.DB
|
||||||
|
}
|
||||||
|
|
||||||
func InitDependencies() *Dependencies {
|
func InitDependencies() *Dependencies {
|
||||||
services := initServices()
|
services := initServices()
|
||||||
|
dbClient := db.NewDBClient()
|
||||||
|
handlers := initHandlers(dbClient)
|
||||||
|
repositories := initRepositories(dbClient)
|
||||||
return &Dependencies{
|
return &Dependencies{
|
||||||
Service: services,
|
Service: services,
|
||||||
//DBClient: db.NewDBClient(),
|
DBClient: dbClient,
|
||||||
Logger: log.Log.GetLog(),
|
Logger: log.Log.GetLog(),
|
||||||
|
Handler: handlers,
|
||||||
|
Repositories: repositories,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,3 +48,16 @@ func initServices() *Service {
|
|||||||
// Add your service here
|
// Add your service here
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initRepositories(dbClient *gorm.DB) *Repositories {
|
||||||
|
return &Repositories{
|
||||||
|
ProductRepository: database.InitProductRepository(dbClient),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initHandlers(dbClient *gorm.DB) *Handler {
|
||||||
|
productHandler := handler.NewProductHandler(dbClient)
|
||||||
|
return &Handler{
|
||||||
|
ProductHandler: productHandler,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
32
internal/transport/handler/product.go
Normal file
32
internal/transport/handler/product.go
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package handler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cybertron/models/db"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ProductHandler struct {
|
||||||
|
dbClient *gorm.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProductHandler) ProductCreate(c *gin.Context) {
|
||||||
|
h.dbClient.Create(&db.Product{ProductReferenceId: "1", Name: "name"})
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": "create product",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProductHandler) ProductGet(c *gin.Context) {
|
||||||
|
var product db.Product
|
||||||
|
h.dbClient.First(&product, 1)
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": product,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
func NewProductHandler(dbClient *gorm.DB) *ProductHandler {
|
||||||
|
return &ProductHandler{
|
||||||
|
dbClient: dbClient,
|
||||||
|
}
|
||||||
|
}
|
||||||
11
internal/transport/router/product.go
Normal file
11
internal/transport/router/product.go
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cybertron/internal/dependencies"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ProductRouter(r *gin.Engine, dep *dependencies.Dependencies) {
|
||||||
|
r.GET("/product", dep.Handler.ProductHandler.ProductCreate)
|
||||||
|
r.GET("/productGet", dep.Handler.ProductHandler.ProductGet)
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
"time"
|
||||||
|
|
||||||
"cybertron/configs"
|
"cybertron/configs"
|
||||||
"cybertron/internal/dependencies"
|
"cybertron/internal/dependencies"
|
||||||
@@ -29,10 +30,11 @@ func NewServer(dep *dependencies.Dependencies) *Server {
|
|||||||
|
|
||||||
func (s *Server) router() {
|
func (s *Server) router() {
|
||||||
router.ReadinessRouter(s.gin)
|
router.ReadinessRouter(s.gin)
|
||||||
|
router.ProductRouter(s.gin, s.dependencies)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Start() {
|
func (s *Server) Start() {
|
||||||
s.gin.Use(ginzap.RecoveryWithZap(s.dependencies.Logger, true))
|
s.gin.Use(ginzap.Ginzap(s.dependencies.Logger, time.RFC3339, false))
|
||||||
s.router()
|
s.router()
|
||||||
|
|
||||||
port := configs.GetPort()
|
port := configs.GetPort()
|
||||||
|
|||||||
9
models/db/Release.go
Normal file
9
models/db/Release.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package db
|
||||||
|
|
||||||
|
import "gorm.io/gorm"
|
||||||
|
|
||||||
|
type Release struct {
|
||||||
|
gorm.Model
|
||||||
|
ProductReferenceId string `gorm:"primaryKey"`
|
||||||
|
ReleaseVersion string `gorm:"column:name"`
|
||||||
|
}
|
||||||
9
models/db/SourceMap.go
Normal file
9
models/db/SourceMap.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package db
|
||||||
|
|
||||||
|
import "gorm.io/gorm"
|
||||||
|
|
||||||
|
type SourceMap struct {
|
||||||
|
gorm.Model
|
||||||
|
ReleaseReferenceId string `gorm:"primaryKey"`
|
||||||
|
SourceMapZipUrl string `gorm:"column:name"`
|
||||||
|
}
|
||||||
9
models/db/product.go
Normal file
9
models/db/product.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package db
|
||||||
|
|
||||||
|
import "gorm.io/gorm"
|
||||||
|
|
||||||
|
type Product struct {
|
||||||
|
gorm.Model
|
||||||
|
ProductReferenceId string `gorm:"primaryKey"`
|
||||||
|
Name string `gorm:"column:name"`
|
||||||
|
}
|
||||||
10
models/db/roles.go
Normal file
10
models/db/roles.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package db
|
||||||
|
|
||||||
|
import "gorm.io/gorm"
|
||||||
|
|
||||||
|
type Roles struct {
|
||||||
|
gorm.Model
|
||||||
|
ProductReferenceId string `gorm:"primaryKey"`
|
||||||
|
Role string `gorm:"column:name"`
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user