milvus/internal/metastore/db/dao/gran_id.go

56 lines
1.6 KiB
Go

package dao
import (
"go.uber.org/zap"
"gorm.io/gorm"
"github.com/milvus-io/milvus/internal/metastore/db/dbmodel"
"github.com/milvus-io/milvus/pkg/log"
)
type grantIDDb struct {
db *gorm.DB
}
func (g *grantIDDb) GetGrantIDs(tenantID string, grantID int64, privilege string, preloadGrant bool, preloadGrantor bool) ([]*dbmodel.GrantID, error) {
var (
grantIDs []*dbmodel.GrantID
db *gorm.DB
err error
)
db = g.db.Model(&dbmodel.GrantID{}).
Where(&dbmodel.GrantID{GrantID: grantID, Privilege: privilege}).
Where(dbmodel.GetCommonCondition(tenantID, false))
if preloadGrant {
db = db.Preload("Grant")
}
if preloadGrantor {
db = db.Preload("Grantor")
}
err = db.Find(&grantIDs).Error
if err != nil {
log.Error("fail to get grant ids", zap.String("tenant_id", tenantID), zap.Int64("grantID", grantID), zap.String("privilege", privilege), zap.Error(err))
return nil, err
}
return grantIDs, err
}
func (g *grantIDDb) Insert(in *dbmodel.GrantID) error {
err := g.db.Create(in).Error
if err != nil {
log.Error("fail to insert the grant-id", zap.Any("in", in), zap.Error(err))
}
return err
}
func (g *grantIDDb) Delete(tenantID string, grantID int64, privilege string) error {
err := g.db.Model(dbmodel.GrantID{}).
Where(&dbmodel.GrantID{GrantID: grantID, Privilege: privilege}).
Where(dbmodel.GetCommonCondition(tenantID, false)).
Update("is_deleted", true).Error
if err != nil {
log.Error("fail to delete the user-role", zap.String("tenant_id", tenantID), zap.Int64("grantID", grantID), zap.String("privilege", privilege), zap.Error(err))
}
return err
}