ulflow_phattt2901 f4ef71b63b
Some checks failed
CI Pipeline / Security Scan (push) Failing after 5m24s
CI Pipeline / Lint (push) Failing after 5m30s
CI Pipeline / Test (push) Has been skipped
CI Pipeline / Build (push) Has been skipped
CI Pipeline / Notification (push) Successful in 1s
feat: implement user authentication system with JWT and role-based access control
2025-05-24 11:24:19 +07:00

55 lines
1.3 KiB
Go

package persistence
import (
"context"
"errors"
"starter-kit/internal/domain/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
}