Initial commit (code only without large binaries)
This commit is contained in:
233
EdgeAPI/internal/rpc/services/service_script_plus.go
Normal file
233
EdgeAPI/internal/rpc/services/service_script_plus.go
Normal file
@@ -0,0 +1,233 @@
|
||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
//go:build plus
|
||||
// +build plus
|
||||
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
)
|
||||
|
||||
// ScriptService 脚本相关服务
|
||||
type ScriptService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
// CreateScript 添加脚本
|
||||
func (this *ScriptService) CreateScript(ctx context.Context, req *pb.CreateScriptRequest) (*pb.CreateScriptResponse, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
scriptId, err := models.SharedScriptDAO.CreateScript(tx, userId, req.Name, req.Filename, req.Code)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &pb.CreateScriptResponse{ScriptId: scriptId}, nil
|
||||
}
|
||||
|
||||
// DeleteScript 删除脚本
|
||||
func (this *ScriptService) DeleteScript(ctx context.Context, req *pb.DeleteScriptRequest) (*pb.RPCSuccess, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
if userId > 0 {
|
||||
err = models.SharedScriptDAO.CheckUserScript(tx, userId, req.ScriptId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
err = models.SharedScriptDAO.DisableScript(tx, req.ScriptId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// CountAllEnabledScripts 计算脚本数量
|
||||
func (this *ScriptService) CountAllEnabledScripts(ctx context.Context, req *pb.CountAllEnabledScriptsRequest) (*pb.RPCCountResponse, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if userId > 0 {
|
||||
req.UserId = userId
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
count, err := models.SharedScriptDAO.CountAllEnabledScripts(tx, userId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return this.SuccessCount(count)
|
||||
}
|
||||
|
||||
// ListEnabledScripts 列出单页脚本
|
||||
func (this *ScriptService) ListEnabledScripts(ctx context.Context, req *pb.ListEnabledScriptsRequest) (*pb.ListEnabledScriptsResponse, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if userId > 0 {
|
||||
req.UserId = userId
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
scripts, err := models.SharedScriptDAO.ListEnabledScripts(tx, req.UserId, req.Offset, req.Size)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pbScripts = []*pb.Script{}
|
||||
for _, script := range scripts {
|
||||
pbScripts = append(pbScripts, &pb.Script{
|
||||
Id: int64(script.Id),
|
||||
UserId: int64(script.UserId),
|
||||
IsOn: script.IsOn,
|
||||
Name: script.Name,
|
||||
Filename: script.Filename,
|
||||
Code: script.Code,
|
||||
UpdatedAt: int64(script.UpdatedAt),
|
||||
})
|
||||
}
|
||||
|
||||
return &pb.ListEnabledScriptsResponse{Scripts: pbScripts}, nil
|
||||
}
|
||||
|
||||
// PublishScripts 发布脚本
|
||||
func (this *ScriptService) PublishScripts(ctx context.Context, req *pb.PublishScriptsRequest) (*pb.RPCSuccess, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if userId > 0 {
|
||||
req.UserId = userId
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
err = models.SharedScriptHistoryDAO.PublishScripts(tx, userId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// CheckScriptUpdates 检查脚本是否需要有更新
|
||||
func (this *ScriptService) CheckScriptUpdates(ctx context.Context, req *pb.CheckScriptUpdatesRequest) (*pb.CheckScriptUpdatesResponse, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if userId > 0 {
|
||||
req.UserId = userId
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
hasUpdates, version, err := models.SharedScriptHistoryDAO.CheckScriptsUpdates(tx, userId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &pb.CheckScriptUpdatesResponse{
|
||||
HasUpdates: hasUpdates,
|
||||
Version: version,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// FindEnabledScript 查找单个脚本
|
||||
func (this *ScriptService) FindEnabledScript(ctx context.Context, req *pb.FindEnabledScriptRequest) (*pb.FindEnabledScriptResponse, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
if userId > 0 {
|
||||
err = models.SharedScriptDAO.CheckUserScript(tx, userId, req.ScriptId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
script, err := models.SharedScriptDAO.FindEnabledScript(tx, req.ScriptId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if script == nil {
|
||||
return &pb.FindEnabledScriptResponse{
|
||||
Script: nil,
|
||||
}, nil
|
||||
}
|
||||
|
||||
return &pb.FindEnabledScriptResponse{
|
||||
Script: &pb.Script{
|
||||
Id: int64(script.Id),
|
||||
UserId: int64(script.UserId),
|
||||
IsOn: script.IsOn,
|
||||
Name: script.Name,
|
||||
Filename: script.Filename,
|
||||
Code: script.Code,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// UpdateScript 修改脚本
|
||||
func (this *ScriptService) UpdateScript(ctx context.Context, req *pb.UpdateScriptRequest) (*pb.RPCSuccess, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
if userId > 0 {
|
||||
err = models.SharedScriptDAO.CheckUserScript(tx, userId, req.ScriptId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
err = models.SharedScriptDAO.UpdateScript(tx, req.ScriptId, req.Name, req.Filename, req.Code, req.IsOn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// ComposeScriptConfigs 组合脚本配置
|
||||
func (this *ScriptService) ComposeScriptConfigs(ctx context.Context, req *pb.ComposeScriptConfigsRequest) (*pb.ComposeScriptConfigsResponse, error) {
|
||||
_, err := this.ValidateNode(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
configs, err := models.SharedScriptHistoryDAO.ComposeScriptConfigs(tx, 0, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
configsJSON, err := json.Marshal(configs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &pb.ComposeScriptConfigsResponse{
|
||||
ScriptConfigsJSON: configsJSON,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user