package service import ( "cybertron/models/db" "cybertron/pkg/log" "github.com/gin-gonic/gin" "gorm.io/gorm" "net/http" ) type ReleaseService struct { logger *log.Logger dbClient *gorm.DB } type ReleaseBody struct { ProjectReferenceId string `json:"projectReferenceId" binding:"required"` ReleaseVersion string `json:"releaseVersion" binding:"required"` } func NewReleaseService(logger *log.Logger, dbClient *gorm.DB) *ReleaseService { return &ReleaseService{ logger: logger, dbClient: dbClient, } } func (releaseService *ReleaseService) AddRelease(c *gin.Context) { var releaseBody ReleaseBody if err := c.BindJSON(&releaseBody); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": "Invalid Request", }) return } releaseToBeAdded := db.Release{ ProjectReferenceId: releaseBody.ProjectReferenceId, ReleaseVersion: releaseBody.ReleaseVersion, } if result := releaseService.dbClient.Create(&releaseToBeAdded); result.Error != nil { c.JSON(http.StatusOK, gin.H{"Release already exist please move ahead": result.Error.Error()}) return } c.JSON(http.StatusOK, gin.H{ "message": "Release added successfully", }) } func (releaseService *ReleaseService) GetReleases(c *gin.Context) { projectRefId := c.Query("project_reference_id") releaseVersion := c.Query("release_version") var releases []db.Release result := releaseService.dbClient.Where("project_reference_id = ? OR release_version = ?", projectRefId, releaseVersion).Find(&releases) if result.Error != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error.Error()}) return } c.JSON(http.StatusOK, releases) }