Files
novatask/internal/model/ms_merge_servers_model.go
2025-04-03 16:17:20 +08:00

53 lines
1.8 KiB
Go
Executable File
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 model
import (
"context"
"errors"
"fmt"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ MsMergeServersModel = (*customMsMergeServersModel)(nil)
type (
// MsMergeServersModel is an interface to be customized, add more methods here,
// and implement the added methods in customMsMergeServersModel.
MsMergeServersModel interface {
msMergeServersModel
withSession(session sqlx.Session) MsMergeServersModel
FinalServer(ctx context.Context, childAgentId, childServerId int64) (FinalAgentId, FinalServerServerId int64, err error)
}
customMsMergeServersModel struct {
*defaultMsMergeServersModel
}
)
func (m *customMsMergeServersModel) FinalServer(ctx context.Context, childAgentId, childServerId int64) (FinalAgentId, FinalServerServerId int64, err error) {
query := fmt.Sprintf("select final_agent_id, final_server_id from %s where child_agent_id = ? and child_server_id = ?", m.table)
var result struct {
FinalServerServerId int64 `db:"final_server_server_id"` // 物理服务器ID来自mg_servers的自增ID
FinalAgentId int64 `db:"final_agent_id"` // 最终被合到了此agent_id下
}
err = m.conn.QueryRowCtx(ctx, &result, query, childAgentId, childServerId)
switch {
case err == nil:
return result.FinalAgentId, result.FinalServerServerId, nil
case errors.Is(err, sqlx.ErrNotFound):
return childAgentId, childServerId, nil
default:
return 0, 0, err
}
}
// NewMsMergeServersModel returns a model for the database table.
func NewMsMergeServersModel(conn sqlx.SqlConn) MsMergeServersModel {
return &customMsMergeServersModel{
defaultMsMergeServersModel: newMsMergeServersModel(conn),
}
}
func (m *customMsMergeServersModel) withSession(session sqlx.Session) MsMergeServersModel {
return NewMsMergeServersModel(sqlx.NewSqlConnFromSession(session))
}