mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-12-15 15:16:34 +08:00
实现基本的图表管理
This commit is contained in:
147
internal/rpc/services/service_metric_chart.go
Normal file
147
internal/rpc/services/service_metric_chart.go
Normal file
@@ -0,0 +1,147 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
"github.com/iwind/TeaGo/types"
|
||||
)
|
||||
|
||||
// MetricChartService 指标图表相关服务
|
||||
type MetricChartService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
// CreateMetricChart 创建图表
|
||||
func (this *MetricChartService) CreateMetricChart(ctx context.Context, req *pb.CreateMetricChartRequest) (*pb.CreateMetricChartResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
var params = maps.Map{}
|
||||
if len(req.ParamsJSON) > 0 {
|
||||
err = json.Unmarshal(req.ParamsJSON, ¶ms)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
chartId, err := models.SharedMetricChartDAO.CreateChart(tx, req.MetricItemId, req.Name, req.Type, req.WidthDiv, req.MaxItems, params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &pb.CreateMetricChartResponse{MetricChartId: chartId}, nil
|
||||
}
|
||||
|
||||
// UpdateMetricChart 修改图表
|
||||
func (this *MetricChartService) UpdateMetricChart(ctx context.Context, req *pb.UpdateMetricChartRequest) (*pb.RPCSuccess, error) {
|
||||
_, err := this.ValidateAdmin(ctx, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
var params = maps.Map{}
|
||||
if len(req.ParamsJSON) > 0 {
|
||||
err = json.Unmarshal(req.ParamsJSON, ¶ms)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
err = models.SharedMetricChartDAO.UpdateChart(tx, req.MetricChartId, req.Name, req.Type, req.WidthDiv, req.MaxItems, params, req.IsOn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// FindEnabledMetricChart 查找单个图表
|
||||
func (this *MetricChartService) FindEnabledMetricChart(ctx context.Context, req *pb.FindEnabledMetricChartRequest) (*pb.FindEnabledMetricChartResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
chart, err := models.SharedMetricChartDAO.FindEnabledMetricChart(tx, req.MetricChartId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if chart == nil {
|
||||
return &pb.FindEnabledMetricChartResponse{MetricChart: nil}, nil
|
||||
}
|
||||
return &pb.FindEnabledMetricChartResponse{
|
||||
MetricChart: &pb.MetricChart{
|
||||
Id: int64(chart.Id),
|
||||
Name: chart.Name,
|
||||
Type: chart.Type,
|
||||
WidthDiv: types.Int32(chart.WidthDiv),
|
||||
MaxItems: types.Int32(chart.MaxItems),
|
||||
ParamsJSON: []byte(chart.Params),
|
||||
IsOn: chart.IsOn == 1,
|
||||
MetricItem: &pb.MetricItem{Id: int64(chart.ItemId)},
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// CountEnabledMetricCharts 计算图表数量
|
||||
func (this *MetricChartService) CountEnabledMetricCharts(ctx context.Context, req *pb.CountEnabledMetricChartsRequest) (*pb.RPCCountResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
count, err := models.SharedMetricChartDAO.CountEnabledCharts(tx, req.MetricItemId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return this.SuccessCount(count)
|
||||
}
|
||||
|
||||
// ListEnabledMetricCharts 列出单页图表
|
||||
func (this *MetricChartService) ListEnabledMetricCharts(ctx context.Context, req *pb.ListEnabledMetricChartsRequest) (*pb.ListEnabledMetricChartsResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
charts, err := models.SharedMetricChartDAO.ListEnabledCharts(tx, req.MetricItemId, req.Offset, req.Size)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var pbCharts []*pb.MetricChart
|
||||
for _, chart := range charts {
|
||||
pbCharts = append(pbCharts, &pb.MetricChart{
|
||||
Id: int64(chart.Id),
|
||||
Name: chart.Name,
|
||||
Type: chart.Type,
|
||||
WidthDiv: types.Int32(chart.WidthDiv),
|
||||
MaxItems: types.Int32(chart.MaxItems),
|
||||
ParamsJSON: []byte(chart.Params),
|
||||
IsOn: chart.IsOn == 1,
|
||||
})
|
||||
}
|
||||
return &pb.ListEnabledMetricChartsResponse{MetricCharts: pbCharts}, nil
|
||||
}
|
||||
|
||||
// DeleteMetricChart 删除图表
|
||||
func (this *MetricChartService) DeleteMetricChart(ctx context.Context, req *pb.DeleteMetricChartRequest) (*pb.RPCSuccess, error) {
|
||||
_, err := this.ValidateAdmin(ctx, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
err = models.SharedMetricChartDAO.DisableMetricChart(tx, req.MetricChartId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return this.Success()
|
||||
}
|
||||
Reference in New Issue
Block a user