mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-02-04 20:50:06 +00:00
implement notification group (#450)
* implement notification group * some fixes * fix sql * add listNotification * retrieve notification from map * create notification_group_notification if non-exist * NotificationIDToGroup -> NotificationIDToGroups * clean
This commit is contained in:
@@ -2,6 +2,8 @@ package controller
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"slices"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
@@ -64,13 +66,14 @@ func createServerGroup(c *gin.Context) (uint64, error) {
|
||||
if err := c.ShouldBindJSON(&sgf); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
sgf.Servers = slices.Compact(sgf.Servers)
|
||||
|
||||
var sg model.ServerGroup
|
||||
sg.Name = sgf.Name
|
||||
|
||||
var count int64
|
||||
if err := singleton.DB.Model(&model.Server{}).Where("id = ?", sgf.Servers).Count(&count).Error; err != nil {
|
||||
return 0, err
|
||||
if err := singleton.DB.Model(&model.Server{}).Where("id in (?)", sgf.Servers).Count(&count).Error; err != nil {
|
||||
return 0, newGormError("%v", err)
|
||||
}
|
||||
if count != int64(len(sgf.Servers)) {
|
||||
return 0, fmt.Errorf("have invalid server id")
|
||||
@@ -110,26 +113,34 @@ func createServerGroup(c *gin.Context) (uint64, error) {
|
||||
// @Success 200 {object} model.CommonResponse[any]
|
||||
// @Router /server-group/{id} [patch]
|
||||
func updateServerGroup(c *gin.Context) (any, error) {
|
||||
id := c.Param("id")
|
||||
idStr := c.Param("id")
|
||||
|
||||
id, err := strconv.ParseUint(idStr, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var sg model.ServerGroupForm
|
||||
if err := c.ShouldBindJSON(&sg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sg.Servers = slices.Compact(sg.Servers)
|
||||
|
||||
var sgDB model.ServerGroup
|
||||
if err := singleton.DB.First(&sgDB, id).Error; err != nil {
|
||||
return nil, fmt.Errorf("group id %s does not exist", id)
|
||||
return nil, fmt.Errorf("group id %d does not exist", id)
|
||||
}
|
||||
sgDB.Name = sg.Name
|
||||
|
||||
var count int64
|
||||
if err := singleton.DB.Model(&model.Server{}).Where("id = ?", sg.Servers).Count(&count).Error; err != nil {
|
||||
if err := singleton.DB.Model(&model.Server{}).Where("id in (?)", sg.Servers).Count(&count).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if count != int64(len(sg.Servers)) {
|
||||
return nil, fmt.Errorf("have invalid server id")
|
||||
}
|
||||
|
||||
err := singleton.DB.Transaction(func(tx *gorm.DB) error {
|
||||
err = singleton.DB.Transaction(func(tx *gorm.DB) error {
|
||||
if err := tx.Save(&sgDB).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user