2025-11-27 13:09:54 +08:00
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
2025-12-09 18:55:28 +08:00
"reflect"
2025-11-27 13:09:54 +08:00
"time"
"github.com/Masterminds/squirrel"
2025-12-09 18:55:28 +08:00
"github.com/google/uuid"
2025-11-27 13:09:54 +08:00
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
agentRelationFieldNames = builder . RawFieldNames ( & AgentRelation { } )
agentRelationRows = strings . Join ( agentRelationFieldNames , "," )
2025-12-09 18:55:28 +08:00
agentRelationRowsExpectAutoSet = strings . Join ( stringx . Remove ( agentRelationFieldNames , "`create_time`" , "`update_time`" ) , "," )
2025-11-27 13:09:54 +08:00
agentRelationRowsWithPlaceHolder = strings . Join ( stringx . Remove ( agentRelationFieldNames , "`id`" , "`create_time`" , "`update_time`" ) , "=?," ) + "=?"
cacheYccAgentRelationIdPrefix = "cache:ycc:agentRelation:id:"
cacheYccAgentRelationParentIdChildIdRelationTypePrefix = "cache:ycc:agentRelation:parentId:childId:relationType:"
)
type (
agentRelationModel interface {
Insert ( ctx context . Context , session sqlx . Session , data * AgentRelation ) ( sql . Result , error )
2025-12-09 18:55:28 +08:00
FindOne ( ctx context . Context , id string ) ( * AgentRelation , error )
FindOneByParentIdChildIdRelationType ( ctx context . Context , parentId string , childId string , relationType int64 ) ( * AgentRelation , error )
2025-11-27 13:09:54 +08:00
Update ( ctx context . Context , session sqlx . Session , data * AgentRelation ) ( sql . Result , error )
UpdateWithVersion ( ctx context . Context , session sqlx . Session , data * AgentRelation ) error
Trans ( ctx context . Context , fn func ( context context . Context , session sqlx . Session ) error ) error
SelectBuilder ( ) squirrel . SelectBuilder
DeleteSoft ( ctx context . Context , session sqlx . Session , data * AgentRelation ) error
FindSum ( ctx context . Context , sumBuilder squirrel . SelectBuilder , field string ) ( float64 , error )
FindCount ( ctx context . Context , countBuilder squirrel . SelectBuilder , field string ) ( int64 , error )
FindAll ( ctx context . Context , rowBuilder squirrel . SelectBuilder , orderBy string ) ( [ ] * AgentRelation , error )
FindPageListByPage ( ctx context . Context , rowBuilder squirrel . SelectBuilder , page , pageSize int64 , orderBy string ) ( [ ] * AgentRelation , error )
FindPageListByPageWithTotal ( ctx context . Context , rowBuilder squirrel . SelectBuilder , page , pageSize int64 , orderBy string ) ( [ ] * AgentRelation , int64 , error )
FindPageListByIdDESC ( ctx context . Context , rowBuilder squirrel . SelectBuilder , preMinId , pageSize int64 ) ( [ ] * AgentRelation , error )
FindPageListByIdASC ( ctx context . Context , rowBuilder squirrel . SelectBuilder , preMaxId , pageSize int64 ) ( [ ] * AgentRelation , error )
2025-12-09 18:55:28 +08:00
Delete ( ctx context . Context , session sqlx . Session , id string ) error
2025-11-27 13:09:54 +08:00
}
defaultAgentRelationModel struct {
sqlc . CachedConn
table string
}
AgentRelation struct {
2025-12-09 18:55:28 +08:00
Id string ` db:"id" `
ParentId string ` db:"parent_id" `
ChildId string ` db:"child_id" `
2025-11-27 13:09:54 +08:00
RelationType int64 ` db:"relation_type" ` // 关系类型: 1=直接关系, 2=已脱离(历史记录)
DetachReason sql . NullString ` db:"detach_reason" ` // 脱离原因: upgrade=升级脱离
DetachTime sql . NullTime ` db:"detach_time" ` // 脱离时间
CreateTime time . Time ` db:"create_time" ` // 创建时间
UpdateTime time . Time ` db:"update_time" ` // 更新时间
DeleteTime sql . NullTime ` db:"delete_time" ` // 删除时间
DelState int64 ` db:"del_state" ` // 删除状态: 0=未删除, 1=已删除
Version int64 ` db:"version" ` // 版本号(乐观锁)
}
)
func newAgentRelationModel ( conn sqlx . SqlConn , c cache . CacheConf ) * defaultAgentRelationModel {
return & defaultAgentRelationModel {
CachedConn : sqlc . NewConn ( conn , c ) ,
table : "`agent_relation`" ,
}
}
func ( m * defaultAgentRelationModel ) Insert ( ctx context . Context , session sqlx . Session , data * AgentRelation ) ( sql . Result , error ) {
data . DelState = globalkey . DelStateNo
2025-12-09 18:55:28 +08:00
m . insertUUID ( data )
2025-11-27 13:09:54 +08:00
yccAgentRelationIdKey := fmt . Sprintf ( "%s%v" , cacheYccAgentRelationIdPrefix , data . Id )
yccAgentRelationParentIdChildIdRelationTypeKey := fmt . Sprintf ( "%s%v:%v:%v" , cacheYccAgentRelationParentIdChildIdRelationTypePrefix , data . ParentId , data . ChildId , data . RelationType )
return m . ExecCtx ( ctx , func ( ctx context . Context , conn sqlx . SqlConn ) ( result sql . Result , err error ) {
2025-12-09 18:55:28 +08:00
query := fmt . Sprintf ( "insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)" , m . table , agentRelationRowsExpectAutoSet )
2025-11-27 13:09:54 +08:00
if session != nil {
2025-12-09 18:55:28 +08:00
return session . ExecCtx ( ctx , query , data . Id , data . ParentId , data . ChildId , data . RelationType , data . DetachReason , data . DetachTime , data . DeleteTime , data . DelState , data . Version )
2025-11-27 13:09:54 +08:00
}
2025-12-09 18:55:28 +08:00
return conn . ExecCtx ( ctx , query , data . Id , data . ParentId , data . ChildId , data . RelationType , data . DetachReason , data . DetachTime , data . DeleteTime , data . DelState , data . Version )
2025-11-27 13:09:54 +08:00
} , yccAgentRelationIdKey , yccAgentRelationParentIdChildIdRelationTypeKey )
}
2025-12-09 18:55:28 +08:00
func ( m * defaultAgentRelationModel ) insertUUID ( data * AgentRelation ) {
t := reflect . TypeOf ( data ) . Elem ( )
v := reflect . ValueOf ( data ) . Elem ( )
for i := 0 ; i < t . NumField ( ) ; i ++ {
sf := t . Field ( i )
if sf . Tag . Get ( "db" ) == "id" {
f := v . Field ( i )
if f . IsValid ( ) && f . CanSet ( ) && f . Kind ( ) == reflect . String {
if f . String ( ) == "" {
f . SetString ( uuid . NewString ( ) )
}
}
break
}
}
}
2025-11-27 13:09:54 +08:00
2025-12-09 18:55:28 +08:00
func ( m * defaultAgentRelationModel ) FindOne ( ctx context . Context , id string ) ( * AgentRelation , error ) {
2025-11-27 13:09:54 +08:00
yccAgentRelationIdKey := fmt . Sprintf ( "%s%v" , cacheYccAgentRelationIdPrefix , id )
var resp AgentRelation
err := m . QueryRowCtx ( ctx , & resp , yccAgentRelationIdKey , func ( ctx context . Context , conn sqlx . SqlConn , v interface { } ) error {
query := fmt . Sprintf ( "select %s from %s where `id` = ? and del_state = ? limit 1" , agentRelationRows , m . table )
return conn . QueryRowCtx ( ctx , v , query , id , globalkey . DelStateNo )
} )
switch err {
case nil :
return & resp , nil
case sqlc . ErrNotFound :
return nil , ErrNotFound
default :
return nil , err
}
}
2025-12-09 18:55:28 +08:00
func ( m * defaultAgentRelationModel ) FindOneByParentIdChildIdRelationType ( ctx context . Context , parentId string , childId string , relationType int64 ) ( * AgentRelation , error ) {
2025-11-27 13:09:54 +08:00
yccAgentRelationParentIdChildIdRelationTypeKey := fmt . Sprintf ( "%s%v:%v:%v" , cacheYccAgentRelationParentIdChildIdRelationTypePrefix , parentId , childId , relationType )
var resp AgentRelation
err := m . QueryRowIndexCtx ( ctx , & resp , yccAgentRelationParentIdChildIdRelationTypeKey , m . formatPrimary , func ( ctx context . Context , conn sqlx . SqlConn , v interface { } ) ( i interface { } , e error ) {
query := fmt . Sprintf ( "select %s from %s where `parent_id` = ? and `child_id` = ? and `relation_type` = ? and del_state = ? limit 1" , agentRelationRows , m . table )
if err := conn . QueryRowCtx ( ctx , & resp , query , parentId , childId , relationType , globalkey . DelStateNo ) ; err != nil {
return nil , err
}
return resp . Id , nil
} , m . queryPrimary )
switch err {
case nil :
return & resp , nil
case sqlc . ErrNotFound :
return nil , ErrNotFound
default :
return nil , err
}
}
func ( m * defaultAgentRelationModel ) Update ( ctx context . Context , session sqlx . Session , newData * AgentRelation ) ( sql . Result , error ) {
data , err := m . FindOne ( ctx , newData . Id )
if err != nil {
return nil , err
}
yccAgentRelationIdKey := fmt . Sprintf ( "%s%v" , cacheYccAgentRelationIdPrefix , data . Id )
yccAgentRelationParentIdChildIdRelationTypeKey := fmt . Sprintf ( "%s%v:%v:%v" , cacheYccAgentRelationParentIdChildIdRelationTypePrefix , data . ParentId , data . ChildId , data . RelationType )
return m . ExecCtx ( ctx , func ( ctx context . Context , conn sqlx . SqlConn ) ( result sql . Result , err error ) {
query := fmt . Sprintf ( "update %s set %s where `id` = ?" , m . table , agentRelationRowsWithPlaceHolder )
if session != nil {
return session . ExecCtx ( ctx , query , newData . ParentId , newData . ChildId , newData . RelationType , newData . DetachReason , newData . DetachTime , newData . DeleteTime , newData . DelState , newData . Version , newData . Id )
}
return conn . ExecCtx ( ctx , query , newData . ParentId , newData . ChildId , newData . RelationType , newData . DetachReason , newData . DetachTime , newData . DeleteTime , newData . DelState , newData . Version , newData . Id )
} , yccAgentRelationIdKey , yccAgentRelationParentIdChildIdRelationTypeKey )
}
func ( m * defaultAgentRelationModel ) UpdateWithVersion ( ctx context . Context , session sqlx . Session , newData * AgentRelation ) error {
oldVersion := newData . Version
newData . Version += 1
var sqlResult sql . Result
var err error
data , err := m . FindOne ( ctx , newData . Id )
if err != nil {
return err
}
yccAgentRelationIdKey := fmt . Sprintf ( "%s%v" , cacheYccAgentRelationIdPrefix , data . Id )
yccAgentRelationParentIdChildIdRelationTypeKey := fmt . Sprintf ( "%s%v:%v:%v" , cacheYccAgentRelationParentIdChildIdRelationTypePrefix , data . ParentId , data . ChildId , data . RelationType )
sqlResult , err = m . ExecCtx ( ctx , func ( ctx context . Context , conn sqlx . SqlConn ) ( result sql . Result , err error ) {
query := fmt . Sprintf ( "update %s set %s where `id` = ? and version = ? " , m . table , agentRelationRowsWithPlaceHolder )
if session != nil {
return session . ExecCtx ( ctx , query , newData . ParentId , newData . ChildId , newData . RelationType , newData . DetachReason , newData . DetachTime , newData . DeleteTime , newData . DelState , newData . Version , newData . Id , oldVersion )
}
return conn . ExecCtx ( ctx , query , newData . ParentId , newData . ChildId , newData . RelationType , newData . DetachReason , newData . DetachTime , newData . DeleteTime , newData . DelState , newData . Version , newData . Id , oldVersion )
} , yccAgentRelationIdKey , yccAgentRelationParentIdChildIdRelationTypeKey )
if err != nil {
return err
}
updateCount , err := sqlResult . RowsAffected ( )
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func ( m * defaultAgentRelationModel ) DeleteSoft ( ctx context . Context , session sqlx . Session , data * AgentRelation ) error {
data . DelState = globalkey . DelStateYes
data . DeleteTime = sql . NullTime { Time : time . Now ( ) , Valid : true }
if err := m . UpdateWithVersion ( ctx , session , data ) ; err != nil {
return errors . Wrapf ( errors . New ( "delete soft failed " ) , "AgentRelationModel delete err : %+v" , err )
}
return nil
}
func ( m * defaultAgentRelationModel ) FindSum ( ctx context . Context , builder squirrel . SelectBuilder , field string ) ( float64 , error ) {
if len ( field ) == 0 {
return 0 , errors . Wrapf ( errors . New ( "FindSum Least One Field" ) , "FindSum Least One Field" )
}
builder = builder . Columns ( "IFNULL(SUM(" + field + "),0)" )
query , values , err := builder . Where ( "del_state = ?" , globalkey . DelStateNo ) . ToSql ( )
if err != nil {
return 0 , err
}
var resp float64
err = m . QueryRowNoCacheCtx ( ctx , & resp , query , values ... )
switch err {
case nil :
return resp , nil
default :
return 0 , err
}
}
func ( m * defaultAgentRelationModel ) FindCount ( ctx context . Context , builder squirrel . SelectBuilder , field string ) ( int64 , error ) {
if len ( field ) == 0 {
return 0 , errors . Wrapf ( errors . New ( "FindCount Least One Field" ) , "FindCount Least One Field" )
}
builder = builder . Columns ( "COUNT(" + field + ")" )
query , values , err := builder . Where ( "del_state = ?" , globalkey . DelStateNo ) . ToSql ( )
if err != nil {
return 0 , err
}
var resp int64
err = m . QueryRowNoCacheCtx ( ctx , & resp , query , values ... )
switch err {
case nil :
return resp , nil
default :
return 0 , err
}
}
func ( m * defaultAgentRelationModel ) FindAll ( ctx context . Context , builder squirrel . SelectBuilder , orderBy string ) ( [ ] * AgentRelation , error ) {
builder = builder . Columns ( agentRelationRows )
if orderBy == "" {
builder = builder . OrderBy ( "id DESC" )
} else {
builder = builder . OrderBy ( orderBy )
}
query , values , err := builder . Where ( "del_state = ?" , globalkey . DelStateNo ) . ToSql ( )
if err != nil {
return nil , err
}
var resp [ ] * AgentRelation
err = m . QueryRowsNoCacheCtx ( ctx , & resp , query , values ... )
switch err {
case nil :
return resp , nil
default :
return nil , err
}
}
func ( m * defaultAgentRelationModel ) FindPageListByPage ( ctx context . Context , builder squirrel . SelectBuilder , page , pageSize int64 , orderBy string ) ( [ ] * AgentRelation , error ) {
builder = builder . Columns ( agentRelationRows )
if orderBy == "" {
builder = builder . OrderBy ( "id DESC" )
} else {
builder = builder . OrderBy ( orderBy )
}
if page < 1 {
page = 1
}
offset := ( page - 1 ) * pageSize
query , values , err := builder . Where ( "del_state = ?" , globalkey . DelStateNo ) . Offset ( uint64 ( offset ) ) . Limit ( uint64 ( pageSize ) ) . ToSql ( )
if err != nil {
return nil , err
}
var resp [ ] * AgentRelation
err = m . QueryRowsNoCacheCtx ( ctx , & resp , query , values ... )
switch err {
case nil :
return resp , nil
default :
return nil , err
}
}
func ( m * defaultAgentRelationModel ) FindPageListByPageWithTotal ( ctx context . Context , builder squirrel . SelectBuilder , page , pageSize int64 , orderBy string ) ( [ ] * AgentRelation , int64 , error ) {
total , err := m . FindCount ( ctx , builder , "id" )
if err != nil {
return nil , 0 , err
}
builder = builder . Columns ( agentRelationRows )
if orderBy == "" {
builder = builder . OrderBy ( "id DESC" )
} else {
builder = builder . OrderBy ( orderBy )
}
if page < 1 {
page = 1
}
offset := ( page - 1 ) * pageSize
query , values , err := builder . Where ( "del_state = ?" , globalkey . DelStateNo ) . Offset ( uint64 ( offset ) ) . Limit ( uint64 ( pageSize ) ) . ToSql ( )
if err != nil {
return nil , total , err
}
var resp [ ] * AgentRelation
err = m . QueryRowsNoCacheCtx ( ctx , & resp , query , values ... )
switch err {
case nil :
return resp , total , nil
default :
return nil , total , err
}
}
func ( m * defaultAgentRelationModel ) FindPageListByIdDESC ( ctx context . Context , builder squirrel . SelectBuilder , preMinId , pageSize int64 ) ( [ ] * AgentRelation , error ) {
builder = builder . Columns ( agentRelationRows )
if preMinId > 0 {
builder = builder . Where ( " id < ? " , preMinId )
}
query , values , err := builder . Where ( "del_state = ?" , globalkey . DelStateNo ) . OrderBy ( "id DESC" ) . Limit ( uint64 ( pageSize ) ) . ToSql ( )
if err != nil {
return nil , err
}
var resp [ ] * AgentRelation
err = m . QueryRowsNoCacheCtx ( ctx , & resp , query , values ... )
switch err {
case nil :
return resp , nil
default :
return nil , err
}
}
func ( m * defaultAgentRelationModel ) FindPageListByIdASC ( ctx context . Context , builder squirrel . SelectBuilder , preMaxId , pageSize int64 ) ( [ ] * AgentRelation , error ) {
builder = builder . Columns ( agentRelationRows )
if preMaxId > 0 {
builder = builder . Where ( " id > ? " , preMaxId )
}
query , values , err := builder . Where ( "del_state = ?" , globalkey . DelStateNo ) . OrderBy ( "id ASC" ) . Limit ( uint64 ( pageSize ) ) . ToSql ( )
if err != nil {
return nil , err
}
var resp [ ] * AgentRelation
err = m . QueryRowsNoCacheCtx ( ctx , & resp , query , values ... )
switch err {
case nil :
return resp , nil
default :
return nil , err
}
}
func ( m * defaultAgentRelationModel ) Trans ( ctx context . Context , fn func ( ctx context . Context , session sqlx . Session ) error ) error {
return m . TransactCtx ( ctx , func ( ctx context . Context , session sqlx . Session ) error {
return fn ( ctx , session )
} )
}
func ( m * defaultAgentRelationModel ) SelectBuilder ( ) squirrel . SelectBuilder {
return squirrel . Select ( ) . From ( m . table )
}
2025-12-09 18:55:28 +08:00
func ( m * defaultAgentRelationModel ) Delete ( ctx context . Context , session sqlx . Session , id string ) error {
2025-11-27 13:09:54 +08:00
data , err := m . FindOne ( ctx , id )
if err != nil {
return err
}
yccAgentRelationIdKey := fmt . Sprintf ( "%s%v" , cacheYccAgentRelationIdPrefix , id )
yccAgentRelationParentIdChildIdRelationTypeKey := fmt . Sprintf ( "%s%v:%v:%v" , cacheYccAgentRelationParentIdChildIdRelationTypePrefix , data . ParentId , data . ChildId , data . RelationType )
_ , err = m . ExecCtx ( ctx , func ( ctx context . Context , conn sqlx . SqlConn ) ( result sql . Result , err error ) {
query := fmt . Sprintf ( "delete from %s where `id` = ?" , m . table )
if session != nil {
return session . ExecCtx ( ctx , query , id )
}
return conn . ExecCtx ( ctx , query , id )
} , yccAgentRelationIdKey , yccAgentRelationParentIdChildIdRelationTypeKey )
return err
}
func ( m * defaultAgentRelationModel ) formatPrimary ( primary interface { } ) string {
return fmt . Sprintf ( "%s%v" , cacheYccAgentRelationIdPrefix , primary )
}
func ( m * defaultAgentRelationModel ) queryPrimary ( ctx context . Context , conn sqlx . SqlConn , v , primary interface { } ) error {
query := fmt . Sprintf ( "select %s from %s where `id` = ? and del_state = ? limit 1" , agentRelationRows , m . table )
return conn . QueryRowCtx ( ctx , v , query , primary , globalkey . DelStateNo )
}
func ( m * defaultAgentRelationModel ) tableName ( ) string {
return m . table
}