@ -3,6 +3,7 @@ package relation
import (
"context"
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation"
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
"github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
"gorm.io/gorm"
"time"
@ -25,19 +26,23 @@ func (o *ObjectInfoGorm) NewTx(tx any) relation.ObjectInfoModelInterface {
}
func ( o * ObjectInfoGorm ) SetObject ( ctx context . Context , obj * relation . ObjectInfoModel ) ( err error ) {
return utils . Wrap1 ( o . DB . Transaction ( func ( tx * gorm . DB ) error {
if err := tx . Where ( "name = ?" , obj . Name ) . Delete ( & relation . ObjectInfoModel { } ) . Error ; err != nil {
return err
}
return tx . Create ( obj ) . Error
} ) )
if err := o . DB . WithContext ( ctx ) . Where ( "name = ?" , obj . Name ) . Delete ( & relation . ObjectInfoModel { } ) . Error ; err != nil {
return errs . Wrap ( err )
}
return errs . Wrap ( o . DB . WithContext ( ctx ) . Create ( obj ) . Error )
//return errs.Wrap(o.DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
// if err := tx.Where("name = ?", obj.Name).Delete(&relation.ObjectInfoModel{}).Error; err != nil {
// return errs.Wrap(err)
// }
// return errs.Wrap(tx.Create(obj).Error)
//}))
}
func ( o * ObjectInfoGorm ) Take ( ctx context . Context , name string ) ( info * relation . ObjectInfoModel , err error ) {
info = & relation . ObjectInfoModel { }
return info , utils . Wrap1 ( o . DB . W here( "name = ?" , name ) . Take ( info ) . Error )
return info , utils . Wrap1 ( o . DB . W ithContext( ctx ) . W here( "name = ?" , name ) . Take ( info ) . Error )
}
func ( o * ObjectInfoGorm ) DeleteExpiration ( ctx context . Context , expiration time . Time ) ( err error ) {
return utils . Wrap1 ( o . DB . W here( "expiration_time IS NOT NULL AND expiration_time <= ?" , expiration ) . Delete ( & relation . ObjectInfoModel { } ) . Error )
return utils . Wrap1 ( o . DB . W ithContext( ctx ) . W here( "expiration_time IS NOT NULL AND expiration_time <= ?" , expiration ) . Delete ( & relation . ObjectInfoModel { } ) . Error )
}