44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package controllers
|
|
|
|
import (
|
|
"gitea.tbdevent.eu/TBD/reforger_crawler_main/initializers"
|
|
"gitea.tbdevent.eu/TBD/reforger_crawler_main/models"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func CreateAddon(c *gin.Context) {
|
|
var addonR models.Addon
|
|
err := c.ShouldBindJSON(&addonR)
|
|
if err != nil {
|
|
c.JSON(400, gin.H{"error": "Invalid JSON"})
|
|
return
|
|
}
|
|
|
|
addon := models.Addon{
|
|
ID: addonR.ID,
|
|
}
|
|
|
|
result := initializers.DB.Where(&addon).First(&addon)
|
|
if result.Error != nil {
|
|
// addon does not exist, create it
|
|
initializers.DB.Create(&addonR)
|
|
} else {
|
|
// addon exists, check version, update it and queue for reindexing if needed
|
|
if addon.CurrentVersionNumber != addonR.CurrentVersionNumber {
|
|
addon.CurrentVersionNumber = addonR.CurrentVersionNumber
|
|
addon.CurrentVersionID = addonR.CurrentVersionID
|
|
addon.CurrentVersionSize = addonR.CurrentVersionSize
|
|
addon.ToBeIndexed = true
|
|
initializers.DB.Save(&addon)
|
|
}
|
|
}
|
|
c.JSON(200, gin.H{"status": "success"})
|
|
}
|
|
|
|
func GetCurrentState(c *gin.Context) {
|
|
var addons []models.Addon
|
|
initializers.DB.Find(&addons)
|
|
|
|
c.JSON(200, addons)
|
|
}
|