添加代理与节点的注册与端口分配接口功能

This commit is contained in:
2025-05-13 09:29:13 +08:00
parent 957d9ef443
commit 60df1548f0
17 changed files with 692 additions and 464 deletions

View File

@@ -36,6 +36,11 @@ func newProxy(db *gorm.DB, opts ...gen.DOOption) proxy {
_proxy.CreatedAt = field.NewField(tableName, "created_at")
_proxy.UpdatedAt = field.NewField(tableName, "updated_at")
_proxy.DeletedAt = field.NewField(tableName, "deleted_at")
_proxy.Edges = proxyHasManyEdges{
db: db.Session(&gorm.Session{}),
RelationField: field.NewRelation("Edges", "models.Edge"),
}
_proxy.fillFieldMap()
@@ -55,6 +60,7 @@ type proxy struct {
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
Edges proxyHasManyEdges
fieldMap map[string]field.Expr
}
@@ -96,7 +102,7 @@ func (p *proxy) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
}
func (p *proxy) fillFieldMap() {
p.fieldMap = make(map[string]field.Expr, 9)
p.fieldMap = make(map[string]field.Expr, 10)
p.fieldMap["id"] = p.ID
p.fieldMap["version"] = p.Version
p.fieldMap["name"] = p.Name
@@ -106,6 +112,7 @@ func (p *proxy) fillFieldMap() {
p.fieldMap["created_at"] = p.CreatedAt
p.fieldMap["updated_at"] = p.UpdatedAt
p.fieldMap["deleted_at"] = p.DeletedAt
}
func (p proxy) clone(db *gorm.DB) proxy {
@@ -118,6 +125,77 @@ func (p proxy) replaceDB(db *gorm.DB) proxy {
return p
}
type proxyHasManyEdges struct {
db *gorm.DB
field.RelationField
}
func (a proxyHasManyEdges) Where(conds ...field.Expr) *proxyHasManyEdges {
if len(conds) == 0 {
return &a
}
exprs := make([]clause.Expression, 0, len(conds))
for _, cond := range conds {
exprs = append(exprs, cond.BeCond().(clause.Expression))
}
a.db = a.db.Clauses(clause.Where{Exprs: exprs})
return &a
}
func (a proxyHasManyEdges) WithContext(ctx context.Context) *proxyHasManyEdges {
a.db = a.db.WithContext(ctx)
return &a
}
func (a proxyHasManyEdges) Session(session *gorm.Session) *proxyHasManyEdges {
a.db = a.db.Session(session)
return &a
}
func (a proxyHasManyEdges) Model(m *models.Proxy) *proxyHasManyEdgesTx {
return &proxyHasManyEdgesTx{a.db.Model(m).Association(a.Name())}
}
type proxyHasManyEdgesTx struct{ tx *gorm.Association }
func (a proxyHasManyEdgesTx) Find() (result []*models.Edge, err error) {
return result, a.tx.Find(&result)
}
func (a proxyHasManyEdgesTx) Append(values ...*models.Edge) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Append(targetValues...)
}
func (a proxyHasManyEdgesTx) Replace(values ...*models.Edge) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Replace(targetValues...)
}
func (a proxyHasManyEdgesTx) Delete(values ...*models.Edge) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Delete(targetValues...)
}
func (a proxyHasManyEdgesTx) Clear() error {
return a.tx.Clear()
}
func (a proxyHasManyEdgesTx) Count() int64 {
return a.tx.Count()
}
type proxyDo struct{ gen.DO }
func (p proxyDo) Debug() *proxyDo {