156 lines
4.2 KiB
Go
156 lines
4.2 KiB
Go
package dao
|
|
|
|
import (
|
|
"fmt"
|
|
"intent-system/pkg/dal/models"
|
|
|
|
"github.com/civet148/log"
|
|
"github.com/civet148/sqlca/v2"
|
|
)
|
|
|
|
const (
|
|
LoginType_Admin1 = 0
|
|
LoginType_Customer1 = 1
|
|
)
|
|
|
|
type DeployDAO struct {
|
|
db *sqlca.Engine
|
|
}
|
|
|
|
func NewDeployDAO(db *sqlca.Engine) *DeployDAO {
|
|
|
|
return &DeployDAO{
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
func (dao *DeployDAO) Insert(dos ...*models.DeployDO) (lastId int64, err error) {
|
|
if lastId, err = dao.db.Model(&dos).Table(models.TableNameDeploy).Insert(); err != nil {
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *DeployDAO) UpdateByNid(do *models.DeployDO, columns ...string) (err error) {
|
|
if _, err = dao.db.Model(do).
|
|
Table(models.TableNameDeploy).
|
|
Select(columns...).
|
|
Eq(models.DEPLOY_COLUMN_NID, do.Nid).
|
|
Update(); err != nil {
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *DeployDAO) UpdateStatusByAppID(appID int64, newStatus string) error {
|
|
var record models.DeployDO
|
|
_, err := dao.db.Model(&record).
|
|
Table(models.TableNameDeploy).
|
|
Where("n_id = ?", appID).
|
|
Limit(1).
|
|
Query()
|
|
if err != nil {
|
|
log.Errorf("根据 appID 查询 DeployDO 失败: %v", err)
|
|
return err
|
|
}
|
|
if record.Id == 0 {
|
|
log.Warnf("找不到 appID=%d 对应的部署记录", appID)
|
|
return fmt.Errorf("无部署记录")
|
|
}
|
|
|
|
// 🔧 修正拼接,避免语法错误
|
|
updateObj := &models.DeployDO{
|
|
Status: newStatus,
|
|
}
|
|
_, err = dao.db.Model(updateObj).
|
|
Table(models.TableNameDeploy).
|
|
Select(models.DEPLOY_COLUMN_STATUS).
|
|
Where("mb_uuid = ? AND repo_name = ? AND user_name = ?", record.MbUuid, record.RepoName, record.UserName).
|
|
Update()
|
|
if err != nil {
|
|
log.Errorf("批量更新状态失败: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// SelectDeployById
|
|
func (dao *DeployDAO) SelectDeployById(id int64, columns ...string) (do *models.DeployDO, err error) {
|
|
log.Infof(".......dal_dao.................Deploy.......................\n\n")
|
|
if _, err = dao.db.Model(&do).Table(models.TableNameDeploy).Id(id).Select(columns...).Query(); err != nil {
|
|
return nil, log.Errorf(err.Error())
|
|
}
|
|
return
|
|
}
|
|
|
|
// query records by n_id
|
|
func (dao *DeployDAO) QueryByNid(id int64, columns ...string) (do *models.DeployDO, err error) {
|
|
if _, err = dao.db.Model(&do).Table(models.TableNameDeploy).Where("n_id = ?", id).Select(columns...).Query(); err != nil {
|
|
return nil, log.Errorf(err.Error())
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *DeployDAO) DeleteByNid(nid int64) error {
|
|
_, err := dao.db.Where("n_id = ?", nid).Table(models.TableNameDeploy).Delete()
|
|
return err
|
|
}
|
|
|
|
func (dao *DeployDAO) DeleteByFields(mbUuid, repoName, userName string) error {
|
|
_, err := dao.db.
|
|
Table(models.TableNameDeploy).
|
|
Where("mb_uuid = ? AND repo_name = ? AND user_name = ?", mbUuid, repoName, userName).
|
|
Delete()
|
|
return err
|
|
}
|
|
|
|
func (dao *DeployDAO) UpdateStatusByFields(mbUuid, repoName, userName string, strStatus string) error {
|
|
updates := map[string]interface{}{
|
|
"status": strStatus,
|
|
}
|
|
_, err := dao.db.
|
|
Model(&updates).
|
|
Table(models.TableNameDeploy).
|
|
And("mb_uuid = ?", mbUuid).
|
|
And("repo_name = ?", repoName).
|
|
And("user_name = ?", userName).
|
|
Update()
|
|
return err
|
|
}
|
|
|
|
func (dao *DeployDAO) DeleteByUserRepoUUIDAndStatus(user, repo, uuid, status string) error {
|
|
log.Infof("🔥 Start to delete record from 'deploy' table")
|
|
log.Infof("🧩 Conditions: user_name=%s, repo_name=%s, mb_uuid=%s, status=%s", user, repo, uuid, status)
|
|
|
|
affected, err := dao.db.Table(models.TableNameDeploy).
|
|
Where("user_name = ? AND repo_name = ? AND mb_uuid = ? AND status = ?", user, repo, uuid, status).
|
|
Delete()
|
|
if err != nil {
|
|
log.Errorf("❌ Delete failed: %v", err)
|
|
return err
|
|
}
|
|
|
|
log.Infof("✅ Successfully deleted %d record(s) with user_name=%s, repo_name=%s, mb_uuid=%s, status=%s",
|
|
affected, user, repo, uuid, status)
|
|
return nil
|
|
}
|
|
|
|
func (dao *DeployDAO) CountByUserRepoUUIDAndStatus(user, repo, uuid, status string) (int64, error) {
|
|
var count int64
|
|
_, err := dao.db.Model(&count).
|
|
Table(models.TableNameDeploy).
|
|
Where("user_name = ? AND repo_name = ? AND mb_uuid = ? AND status = ?", user, repo, uuid, status).
|
|
Count("id").
|
|
Query()
|
|
if err != nil {
|
|
log.Errorf("❌ Count failed: %v", err)
|
|
return 0, err
|
|
}
|
|
|
|
log.Infof("✅ Counted %d record(s) with user_name=%s, repo_name=%s, mb_uuid=%s, status=%s",
|
|
count, user, repo, uuid, status)
|
|
return count, nil
|
|
}
|