zee-solution/internal/adapter/postgres/role_repository.go

55 lines
1.3 KiB
Go

package postgres
import (
"context"
"errors"
"zee/internal/resource/role"
"gorm.io/gorm"
)
type roleRepository struct {
db *gorm.DB
}
// NewRoleRepository tạo mới một instance của RoleRepository
func NewRoleRepository(db *gorm.DB) role.Repository {
return &roleRepository{db: db}
}
func (r *roleRepository) Create(ctx context.Context, role *role.Role) error {
return r.db.WithContext(ctx).Create(role).Error
}
func (r *roleRepository) GetByID(ctx context.Context, id int) (*role.Role, error) {
var role role.Role
err := r.db.WithContext(ctx).First(&role, id).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return &role, err
}
func (r *roleRepository) GetByName(ctx context.Context, name string) (*role.Role, error) {
var role role.Role
err := r.db.WithContext(ctx).First(&role, "name = ?", name).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return &role, err
}
func (r *roleRepository) List(ctx context.Context) ([]*role.Role, error) {
var roles []*role.Role
err := r.db.WithContext(ctx).Find(&roles).Error
return roles, err
}
func (r *roleRepository) Update(ctx context.Context, role *role.Role) error {
return r.db.WithContext(ctx).Save(role).Error
}
func (r *roleRepository) Delete(ctx context.Context, id int) error {
return r.db.WithContext(ctx).Delete(&role.Role{}, id).Error
}