TP-55555 | crud ingestor

This commit is contained in:
varnit-goyal_navi
2024-07-23 17:55:23 +05:30
parent 9899cccd8e
commit 80fe136a42
11 changed files with 133 additions and 7 deletions

View File

@@ -0,0 +1 @@
create database cybertron_dev;

1
go.mod
View File

@@ -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

View 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
}

View File

@@ -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,
}
}

View 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,
}
}

View 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)
}

View File

@@ -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
View 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
View 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
View 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
View 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"`
}