diff --git a/internal/logic/admin/server/deleteNodeLogic.go b/internal/logic/admin/server/deleteNodeLogic.go index a8839be..8a5f6a0 100644 --- a/internal/logic/admin/server/deleteNodeLogic.go +++ b/internal/logic/admin/server/deleteNodeLogic.go @@ -2,7 +2,9 @@ package server import ( "context" + "strings" + "github.com/perfect-panel/server/internal/model/node" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/logger" @@ -26,10 +28,20 @@ func NewDeleteNodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Delete } func (l *DeleteNodeLogic) DeleteNode(req *types.DeleteNodeRequest) error { - err := l.svcCtx.NodeModel.DeleteNode(l.ctx, req.Id) + data, err := l.svcCtx.NodeModel.FindOneNode(l.ctx, req.Id) + + err = l.svcCtx.NodeModel.DeleteNode(l.ctx, req.Id) if err != nil { l.Errorw("[DeleteNode] Delete Database Error: ", logger.Field("error", err.Error())) return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseDeletedError), "[DeleteNode] Delete Database Error") } - return nil + + return l.svcCtx.NodeModel.ClearNodeCache(l.ctx, &node.FilterNodeParams{ + Page: 1, + Size: 1000, + ServerId: []int64{data.ServerId}, + Tag: strings.Split(data.Tags, ","), + Search: "", + Protocol: data.Protocol, + }) } diff --git a/internal/logic/admin/server/deleteServerLogic.go b/internal/logic/admin/server/deleteServerLogic.go index 912a18c..186d14a 100644 --- a/internal/logic/admin/server/deleteServerLogic.go +++ b/internal/logic/admin/server/deleteServerLogic.go @@ -3,6 +3,7 @@ package server import ( "context" + "github.com/perfect-panel/server/internal/model/node" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/logger" @@ -31,5 +32,10 @@ func (l *DeleteServerLogic) DeleteServer(req *types.DeleteServerRequest) error { l.Errorw("[DeleteServer] Delete Server Error: ", logger.Field("error", err.Error())) return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseDeletedError), "[DeleteServer] Delete Server Error") } - return nil + return l.svcCtx.NodeModel.ClearNodeCache(l.ctx, &node.FilterNodeParams{ + Page: 1, + Size: 1000, + ServerId: []int64{req.Id}, + Search: "", + }) } diff --git a/internal/logic/admin/server/toggleNodeStatusLogic.go b/internal/logic/admin/server/toggleNodeStatusLogic.go index 04e7244..f71048f 100644 --- a/internal/logic/admin/server/toggleNodeStatusLogic.go +++ b/internal/logic/admin/server/toggleNodeStatusLogic.go @@ -2,7 +2,9 @@ package server import ( "context" + "strings" + "github.com/perfect-panel/server/internal/model/node" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/logger" @@ -39,5 +41,11 @@ func (l *ToggleNodeStatusLogic) ToggleNodeStatus(req *types.ToggleNodeStatusRequ return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "[ToggleNodeStatus] Update Database Error") } - return nil + return l.svcCtx.NodeModel.ClearNodeCache(l.ctx, &node.FilterNodeParams{ + Page: 1, + Size: 1000, + ServerId: []int64{data.ServerId}, + Tag: strings.Split(data.Tags, ","), + Search: "", + }) } diff --git a/internal/logic/admin/server/updateNodeLogic.go b/internal/logic/admin/server/updateNodeLogic.go index 557e535..2af8a4d 100644 --- a/internal/logic/admin/server/updateNodeLogic.go +++ b/internal/logic/admin/server/updateNodeLogic.go @@ -3,6 +3,7 @@ package server import ( "context" + "github.com/perfect-panel/server/internal/model/node" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/logger" @@ -44,5 +45,10 @@ func (l *UpdateNodeLogic) UpdateNode(req *types.UpdateNodeRequest) error { l.Errorw("[UpdateNode] Update Database Error: ", logger.Field("error", err.Error())) return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "[UpdateNode] Update Database Error") } - return nil + return l.svcCtx.NodeModel.ClearNodeCache(l.ctx, &node.FilterNodeParams{ + Page: 1, + Size: 1000, + ServerId: []int64{data.ServerId}, + Search: "", + }) } diff --git a/internal/logic/admin/server/updateServerLogic.go b/internal/logic/admin/server/updateServerLogic.go index 2554f85..e67c88c 100644 --- a/internal/logic/admin/server/updateServerLogic.go +++ b/internal/logic/admin/server/updateServerLogic.go @@ -111,5 +111,10 @@ func (l *UpdateServerLogic) UpdateServer(req *types.UpdateServerRequest) error { return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "update server error: %v", err.Error()) } - return nil + return l.svcCtx.NodeModel.ClearNodeCache(l.ctx, &node.FilterNodeParams{ + Page: 1, + Size: 1000, + ServerId: []int64{req.Id}, + Search: "", + }) } diff --git a/internal/model/node/cache.go b/internal/model/node/cache.go index 3e61c9f..3d16c78 100644 --- a/internal/model/node/cache.go +++ b/internal/model/node/cache.go @@ -66,6 +66,12 @@ func (m *customServerModel) UpdateStatusCache(ctx context.Context, serverId int6 } +// DeleteStatusCache Delete server status from cache +func (m *customServerModel) DeleteStatusCache(ctx context.Context, serverId int64) error { + key := fmt.Sprintf(StatusCacheKey, serverId) + return m.Cache.Del(ctx, key).Err() +} + // StatusCache Get server status from cache func (m *customServerModel) StatusCache(ctx context.Context, serverId int64) (Status, error) { var status Status @@ -113,6 +119,12 @@ func (m *customServerModel) UpdateOnlineUserSubscribe(ctx context.Context, serve return m.Cache.Set(ctx, key, data, Expiry).Err() } +// DeleteOnlineUserSubscribe Delete online user subscribe +func (m *customServerModel) DeleteOnlineUserSubscribe(ctx context.Context, serverId int64, protocol string) error { + key := fmt.Sprintf(OnlineUserCacheKeyWithSubscribe, serverId, protocol) + return m.Cache.Del(ctx, key).Err() +} + // OnlineUserSubscribeGlobal Get global online user subscribe count func (m *customServerModel) OnlineUserSubscribeGlobal(ctx context.Context) (int64, error) { now := time.Now().Unix() @@ -144,3 +156,8 @@ func (m *customServerModel) UpdateOnlineUserSubscribeGlobal(ctx context.Context, _, err := pipe.Exec(ctx) return err } + +// DeleteOnlineUserSubscribeGlobal Delete global online user subscribe count +func (m *customServerModel) DeleteOnlineUserSubscribeGlobal(ctx context.Context) error { + return m.Cache.Del(ctx, OnlineUserSubscribeCacheKeyWithGlobal).Err() +}