liuhaijun e94826ce29 add server
Change-Id: I0760f17f6a01c0121b59fcbfafc666032dbc30af
2024-09-19 09:44:15 +00:00

161 lines
4.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package project_info
import (
"database/sql"
"fmt"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model"
"github.com/araujo88/lambda-go/pkg/core"
"gorm.io/gorm"
)
type ProjectInfo struct {
model.BaseWorkspaceModel
ProjectId string `gorm:"column:project_id" json:"projectId"`
NodeId string `gorm:"column:node_id" json:"nodeId"`
Name string `gorm:"column:name" json:"name"`
Lib string `gorm:"column:lib" json:"lib"`
WhitelistDirectory string `gorm:"column:whitelist_directory" json:"whitelistDirectory"`
LogPath string `gorm:"column:log_path" json:"logPath"`
Jvm string `gorm:"column:jvm" json:"jvm"`
Args string `gorm:"column:args" json:"args"`
Token string `gorm:"column:token" json:"token"`
RunMode string `gorm:"column:run_mode" json:"runMode"`
OutGivingProject bool `gorm:"column:out_giving_project" json:"outGivingProject"`
//SortValue string `gorm:"column:sort_value" json:"sortValue"`
TriggerToken string `gorm:"column:trigger_token" json:"triggerToken"`
Group *string `gorm:"column:group" json:"group"`
DslContent string `gorm:"column:dsl_content" json:"dslContent"`
DslEnv string `gorm:"column:dsl_env" json:"dslEnv"`
AutoStart bool `gorm:"column:auto_start" json:"autoStart"`
NodeName string `gorm:"column:node_name" json:"nodeName"`
WorkspaceName string `gorm:"column:workspace_name" json:"workspaceName"`
}
func New() *ProjectInfo {
n := &ProjectInfo{}
n.Handler = n
return n
}
func (*ProjectInfo) TableName() string {
return "sched_project_info"
}
// 删除所有项目
func ClearAll() (int64, error) {
return model.DB().Where("1 = 1").Delete(&ProjectInfo{}).RowsAffected, nil
}
// 根据Id删除项目
func DeleteProjectById(id string) (int64, error) {
return model.DB().Where("id = ?", id).Delete(&ProjectInfo{}).RowsAffected, nil
}
// 根据Id查询项目
func GetProjectById(id string) (ProjectInfo, error) {
var project ProjectInfo
err := model.DB().Where("id = ?", id).First(&project).Error
return project, err
}
// 根据Id批量查询项目
func GetProjectByIds(ids []string) []ProjectInfo {
var projects []ProjectInfo
model.DB().Where("id in (?)", ids).Find(&projects)
return projects
}
// 根据nodeId和workspace_id删除项目
func DeleteProjectByNodeIdAndWorkspaceId(nodeId, workspaceId string) (int64, error) {
return model.DB().Where("node_id = ? and workspace_id = ?", nodeId, workspaceId).Delete(&ProjectInfo{}).RowsAffected, nil
}
// 根据nodeId删除项目
func DeleteProjectByNodeId(nodeId string) (int64, error) {
return model.DB().Where("node_id = ?", nodeId).Delete(&ProjectInfo{}).RowsAffected, nil
}
// 根据nodeId查询项目
func GetProjectByNodeId(nodeId string) ([]ProjectInfo, error) {
var result []ProjectInfo
err := model.DB().Table(New().TableName()).Table(New().TableName()).Where("node_id = ?", nodeId).Find(&result).Error
if err != nil {
return nil, err
}
return result, nil
}
// 指定workspaceId, nodeId计算符合条件的项目数
func Exists_1(workspaceId, nodeId string) (bool, error) {
var result int64
tx := model.DB().Table(New().TableName()).Where("workspace_id = ? and node_id = ?", workspaceId, nodeId).Count(&result)
if tx.Error != nil {
return false, tx.Error
}
return result > 0, nil
}
// 指定workspaceId, nodeId, projectId计算符合条件的项目数
func Exists(workspaceId, nodeId, projectId string) (bool, error) {
var result int64
tx := model.DB().Table(New().TableName()).Where("workspace_id = ? and node_id = ? and project_id = ?", workspaceId, nodeId, projectId).Count(&result)
if tx.Error != nil {
return false, tx.Error
}
return result > 0, nil
}
// 指定Id计算符合条件的项目数
func ExistsById(id string) (bool, error) {
var result int64
tx := model.DB().Table(New().TableName()).Where("id = ?", id).Count(&result)
if tx.Error != nil {
return false, tx.Error
}
return result > 0, nil
}
func (p *ProjectInfo) ListGroup() ([]string, error) {
var result []sql.NullString
tx := model.DB().Table(p.TableName()).Select("\"group\"").Distinct().Scan(&result)
if len(result) > 0 {
us := core.Map(result, func(s sql.NullString) string {
if s.Valid {
return s.String
}
return ""
})
return us, tx.Error
}
return []string{}, tx.Error
}
func (p *ProjectInfo) CreateOrUpdate() (err error) {
_, err = p.Create(p)
if err != nil {
fmt.Println(err.Error())
_, err = p.Update(p, nil)
}
return err
}
func (p *ProjectInfo) FindResult(db *gorm.DB) (interface{}, error) {
var result []ProjectInfo
if db == nil {
return result, nil
}
err := db.Find(&result).Error
return result, err
}
// 根据工作空间(WorkspaceId)计算项目数量
func CountProjectByWorkspaceId(workspaceId string) (int64, error) {
var result int64
tx := model.DB().Table(New().TableName()).Where("workspace_id = ?", workspaceId).Count(&result)
if tx.Error != nil {
return 0, tx.Error
}
return result, nil
}