Files
certman/repositories/user.go
Björn Benouarets ccf65ec6c6 feat: implement repository layer for data access
- Add CertificateRepository with CRUD operations
- Implement CertificateAuthorityRepository for CA management
- Add CertificateRequestRepository for CSR handling
- Include UserRepository and OrganizationRepository
- Implement proper error handling and validation
- Add support for soft deletes and relationships
- Include query optimization and filtering capabilities
2025-09-30 11:44:40 +02:00

57 lines
1.3 KiB
Go

package repositories
import (
"git.secnex.io/secnex/certman/models"
"gorm.io/gorm"
)
type UserRepository struct {
db *gorm.DB
}
// NewUserRepository creates a new user repository
func NewUserRepository(db *gorm.DB) *UserRepository {
return &UserRepository{db: db}
}
// GetByID returns a user by their ID
func (r *UserRepository) GetByID(id string) (models.User, error) {
var user models.User
if err := r.db.Where("id = ?", id).First(&user).Error; err != nil {
return models.User{}, err
}
return user, nil
}
// GetAll returns all users
func (r *UserRepository) GetAll() ([]models.User, error) {
var users []models.User
if err := r.db.Find(&users).Error; err != nil {
return []models.User{}, err
}
return users, nil
}
// Create creates a new user
func (r *UserRepository) Create(user models.User) (models.User, error) {
if err := r.db.Create(&user).Error; err != nil {
return models.User{}, err
}
return user, nil
}
// Update updates a user
func (r *UserRepository) Update(user models.User) error {
return r.db.Save(&user).Error
}
// Delete deletes a user by their ID
func (r *UserRepository) Delete(id string) error {
return r.db.Delete(&models.User{}, id).Error
}
// HardDelete deletes a user by their ID
func (r *UserRepository) HardDelete(user models.User) error {
return r.db.Unscoped().Delete(&user).Error
}