2023-01-28 13:19:36 +08:00
package relation
2023-01-04 19:26:57 +08:00
import (
2023-02-03 12:16:48 +08:00
"Open_IM/pkg/common/db/table/relation"
2023-01-30 11:14:18 +08:00
"Open_IM/pkg/common/tracelog"
2023-01-04 19:26:57 +08:00
"Open_IM/pkg/utils"
2023-01-05 10:07:38 +08:00
"context"
2023-01-11 16:23:16 +08:00
"gorm.io/gorm"
2023-01-04 19:26:57 +08:00
)
2023-02-01 17:07:56 +08:00
type GroupRequestGorm struct {
DB * gorm . DB
2023-01-29 10:31:01 +08:00
}
2023-02-01 17:07:56 +08:00
func NewGroupRequest ( db * gorm . DB ) * GroupRequestGorm {
return & GroupRequestGorm {
2023-01-29 10:31:01 +08:00
DB : db ,
}
2023-01-04 19:26:57 +08:00
}
2023-02-03 12:16:48 +08:00
func ( g * GroupRequestGorm ) Create ( ctx context . Context , groupRequests [ ] * relation . GroupRequestModel , tx ... * gorm . DB ) ( err error ) {
2023-01-05 10:07:38 +08:00
defer func ( ) {
2023-01-30 11:10:26 +08:00
tracelog . SetCtxDebug ( ctx , utils . GetFuncName ( 1 ) , err , "groupRequests" , groupRequests )
2023-01-05 10:07:38 +08:00
} ( )
2023-02-01 17:07:56 +08:00
return utils . Wrap ( getDBConn ( g . DB , tx ) . Create ( & groupRequests ) . Error , utils . GetSelfFuncName ( ) )
2023-01-04 19:26:57 +08:00
}
2023-02-03 12:16:48 +08:00
func ( g * GroupRequestGorm ) Delete ( ctx context . Context , groupRequests [ ] * relation . GroupRequestModel , tx ... * gorm . DB ) ( err error ) {
2023-01-05 10:07:38 +08:00
defer func ( ) {
2023-01-30 11:10:26 +08:00
tracelog . SetCtxDebug ( ctx , utils . GetFuncName ( 1 ) , err , "groupRequests" , groupRequests )
2023-01-05 10:07:38 +08:00
} ( )
2023-02-01 17:07:56 +08:00
return utils . Wrap ( getDBConn ( g . DB , tx ) . Delete ( & groupRequests ) . Error , utils . GetSelfFuncName ( ) )
2023-01-04 19:26:57 +08:00
}
2023-02-01 17:07:56 +08:00
func ( g * GroupRequestGorm ) UpdateByMap ( ctx context . Context , groupID string , userID string , args map [ string ] interface { } , tx ... * gorm . DB ) ( err error ) {
2023-01-05 10:07:38 +08:00
defer func ( ) {
2023-01-30 11:10:26 +08:00
tracelog . SetCtxDebug ( ctx , utils . GetFuncName ( 1 ) , err , "groupID" , groupID , "userID" , userID , "args" , args )
2023-01-05 10:07:38 +08:00
} ( )
2023-02-01 17:07:56 +08:00
return utils . Wrap ( getDBConn ( g . DB , tx ) . Where ( "group_id = ? and user_id = ? " , groupID , userID ) . Updates ( args ) . Error , utils . GetSelfFuncName ( ) )
2023-01-04 19:26:57 +08:00
}
2023-02-03 12:16:48 +08:00
func ( g * GroupRequestGorm ) Update ( ctx context . Context , groupRequests [ ] * relation . GroupRequestModel , tx ... * gorm . DB ) ( err error ) {
2023-01-05 10:07:38 +08:00
defer func ( ) {
2023-01-30 11:10:26 +08:00
tracelog . SetCtxDebug ( ctx , utils . GetFuncName ( 1 ) , err , "groupRequests" , groupRequests )
2023-01-05 10:07:38 +08:00
} ( )
2023-02-01 17:07:56 +08:00
return utils . Wrap ( getDBConn ( g . DB , tx ) . Updates ( & groupRequests ) . Error , utils . GetSelfFuncName ( ) )
2023-01-04 19:26:57 +08:00
}
2023-02-03 12:16:48 +08:00
func ( g * GroupRequestGorm ) Find ( ctx context . Context , groupRequests [ ] * relation . GroupRequestModel , tx ... * gorm . DB ) ( resultGroupRequests [ ] * relation . GroupRequestModel , err error ) {
2023-01-05 10:07:38 +08:00
defer func ( ) {
2023-01-30 11:10:26 +08:00
tracelog . SetCtxDebug ( ctx , utils . GetFuncName ( 1 ) , err , "groupRequests" , groupRequests , "resultGroupRequests" , resultGroupRequests )
2023-01-05 10:07:38 +08:00
} ( )
var where [ ] [ ] interface { }
for _ , groupMember := range groupRequests {
where = append ( where , [ ] interface { } { groupMember . GroupID , groupMember . UserID } )
}
2023-02-01 17:07:56 +08:00
return resultGroupRequests , utils . Wrap ( getDBConn ( g . DB , tx ) . Where ( "(group_id, user_id) in ?" , where ) . Find ( & resultGroupRequests ) . Error , utils . GetSelfFuncName ( ) )
2023-01-04 19:26:57 +08:00
}
2023-02-03 12:16:48 +08:00
func ( g * GroupRequestGorm ) Take ( ctx context . Context , groupID string , userID string , tx ... * gorm . DB ) ( groupRequest * relation . GroupRequestModel , err error ) {
groupRequest = & relation . GroupRequestModel { }
2023-01-05 10:07:38 +08:00
defer func ( ) {
2023-01-30 11:10:26 +08:00
tracelog . SetCtxDebug ( ctx , utils . GetFuncName ( 1 ) , err , "groupID" , groupID , "userID" , userID , "groupRequest" , * groupRequest )
2023-01-05 10:07:38 +08:00
} ( )
2023-02-01 17:07:56 +08:00
return groupRequest , utils . Wrap ( getDBConn ( g . DB , tx ) . Where ( "group_id = ? and user_id = ? " , groupID , userID ) . Take ( groupRequest ) . Error , utils . GetSelfFuncName ( ) )
2023-01-04 19:26:57 +08:00
}