package repository import ( "context" "github.com/Caknoooo/go-gin-clean-starter/database/entities" "gorm.io/gorm" ) type ( PermissionsRepository interface { Create(ctx context.Context, tx *gorm.DB, permission entities.M_Permissions) (entities.M_Permissions, error) GetById(ctx context.Context, tx *gorm.DB, id string) (entities.M_Permissions, error) GetByName(ctx context.Context, tx *gorm.DB, name string) (entities.M_Permissions, error) Update(ctx context.Context, tx *gorm.DB, permission entities.M_Permissions) (entities.M_Permissions, error) Delete(ctx context.Context, tx *gorm.DB, id string) error GetAll(ctx context.Context, tx *gorm.DB) ([]entities.M_Permissions, error) } permissionsRepository struct { db *gorm.DB } ) func (r *permissionsRepository) Create(ctx context.Context, tx *gorm.DB, permission entities.M_Permissions) (entities.M_Permissions, error) { if tx == nil { tx = r.db } if err := tx.WithContext(ctx).Create(&permission).Error; err != nil { return entities.M_Permissions{}, err } return permission, nil } func (r *permissionsRepository) GetById(ctx context.Context, tx *gorm.DB, id string) (entities.M_Permissions, error) { if tx == nil { tx = r.db } var permission entities.M_Permissions if err := tx.WithContext(ctx).Preload("Menu").First(&permission, "id = ?", id).Error; err != nil { return entities.M_Permissions{}, err } return permission, nil } func (r *permissionsRepository) GetByName(ctx context.Context, tx *gorm.DB, name string) (entities.M_Permissions, error) { if tx == nil { tx = r.db } var permission entities.M_Permissions if err := tx.WithContext(ctx).Where("name = ?", name).First(&permission).Error; err != nil { return entities.M_Permissions{}, err } return permission, nil } func (r *permissionsRepository) Update(ctx context.Context, tx *gorm.DB, permission entities.M_Permissions) (entities.M_Permissions, error) { if tx == nil { tx = r.db } if err := tx.WithContext(ctx).Updates(&permission).Error; err != nil { return entities.M_Permissions{}, err } return permission, nil } func (r *permissionsRepository) Delete(ctx context.Context, tx *gorm.DB, id string) error { if tx == nil { tx = r.db } if err := tx.WithContext(ctx).Where("id = ?", id).Delete(&entities.M_Permissions{}).Error; err != nil { return err } return nil } func (r *permissionsRepository) GetAll(ctx context.Context, tx *gorm.DB) ([]entities.M_Permissions, error) { if tx == nil { tx = r.db } var permissions []entities.M_Permissions if err := tx.WithContext(ctx).Preload("Menu").Find(&permissions).Error; err != nil { return nil, err } return permissions, nil } func NewPermissionsRepository(db *gorm.DB) PermissionsRepository { return &permissionsRepository{db: db} }