feat(rule): implement logic to set a default rule group during creation and update
This commit is contained in:
parent
994cc4bebb
commit
94d316ec52
@ -53,8 +53,7 @@ func (l *CreateRuleGroupLogic) CreateRuleGroup(req *types.CreateRuleGroupRequest
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
info := &server.RuleGroup{
|
||||||
err = l.svcCtx.ServerModel.InsertRuleGroup(l.ctx, &server.RuleGroup{
|
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Icon: req.Icon,
|
Icon: req.Icon,
|
||||||
Type: req.Type,
|
Type: req.Type,
|
||||||
@ -62,10 +61,18 @@ func (l *CreateRuleGroupLogic) CreateRuleGroup(req *types.CreateRuleGroupRequest
|
|||||||
Rules: strings.Join(rs, "\n"),
|
Rules: strings.Join(rs, "\n"),
|
||||||
Default: req.Default,
|
Default: req.Default,
|
||||||
Enable: req.Enable,
|
Enable: req.Enable,
|
||||||
})
|
}
|
||||||
|
err = l.svcCtx.ServerModel.InsertRuleGroup(l.ctx, info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.Errorw("[CreateRuleGroup] Insert Database Error: ", logger.Field("error", err.Error()))
|
l.Errorw("[CreateRuleGroup] Insert Database Error: ", logger.Field("error", err.Error()))
|
||||||
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseInsertError), "create server rule group error: %v", err)
|
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseInsertError), "create server rule group error: %v", err)
|
||||||
}
|
}
|
||||||
|
if req.Default {
|
||||||
|
if err = l.svcCtx.ServerModel.SetDefaultRuleGroup(l.ctx, info.Id); err != nil {
|
||||||
|
l.Errorw("[CreateRuleGroup] Set Default Rule Group Error: ", logger.Field("error", err.Error()))
|
||||||
|
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "set default rule group error: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,5 +48,11 @@ func (l *UpdateRuleGroupLogic) UpdateRuleGroup(req *types.UpdateRuleGroupRequest
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), err.Error())
|
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), err.Error())
|
||||||
}
|
}
|
||||||
|
if req.Default {
|
||||||
|
if err = l.svcCtx.ServerModel.SetDefaultRuleGroup(l.ctx, req.Id); err != nil {
|
||||||
|
l.Errorf("SetDefaultRuleGroup error: %v", err.Error())
|
||||||
|
return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,8 @@ type customServerLogicModel interface {
|
|||||||
QueryAllRuleGroup(ctx context.Context) ([]*RuleGroup, error)
|
QueryAllRuleGroup(ctx context.Context) ([]*RuleGroup, error)
|
||||||
FindServersByTag(ctx context.Context, tag string) ([]*Server, error)
|
FindServersByTag(ctx context.Context, tag string) ([]*Server, error)
|
||||||
FindServerTags(ctx context.Context) ([]string, error)
|
FindServerTags(ctx context.Context) ([]string, error)
|
||||||
|
|
||||||
|
SetDefaultRuleGroup(ctx context.Context, id int64) error
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -275,3 +277,16 @@ func (m *customServerModel) FindServersByTag(ctx context.Context, tag string) ([
|
|||||||
})
|
})
|
||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetDefaultRuleGroup sets the default rule group.
|
||||||
|
|
||||||
|
func (m *customServerModel) SetDefaultRuleGroup(ctx context.Context, id int64) error {
|
||||||
|
return m.ExecCtx(ctx, func(conn *gorm.DB) error {
|
||||||
|
// Reset all groups to not default
|
||||||
|
if err := conn.Model(&RuleGroup{}).Update("default", false).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// Set the specified group as default
|
||||||
|
return conn.Model(&RuleGroup{}).Where("id = ?", id).Update("default", true).Error
|
||||||
|
}, cacheServerRuleGroupAllKeys, fmt.Sprintf("cache:serverRuleGroup:%v", id))
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user