91 lines
2.7 KiB
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}
|
|
}
|