wms-be/modules/permissions/repository/permissions_repository.go

91 lines
2.7 KiB
Go

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}
}