53 lines
1.8 KiB
Go
Executable File
53 lines
1.8 KiB
Go
Executable File
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))
|
||
}
|