55 lines
1.3 KiB
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
|
|
}
|