Files
Björn Benouarets 6f4e929959 feat: add data access layer (repositories)
- Add user repository with CRUD operations and authentication methods
- Add session repository for session management and validation
- Add API key repository for API key management
- Include proper error handling and database transaction support
- Implement search and filtering capabilities
2025-09-25 23:24:28 +02:00

67 lines
1.6 KiB
Go

package repositories
import (
"git.secnex.io/secnex/idp-api/models"
"gorm.io/gorm"
)
type UserRepository struct {
db *gorm.DB
}
func NewUserRepository(db *gorm.DB) *UserRepository {
return &UserRepository{db: db}
}
// GetAllUsers retrieves all users from the database
func (r *UserRepository) GetAllUsers() ([]models.User, error) {
var users []models.User
err := r.db.Find(&users).Error
return users, err
}
// GetUserByID retrieves a user by ID
func (r *UserRepository) GetUserByID(id string) (*models.User, error) {
var user models.User
err := r.db.First(&user, "id = ?", id).Error
if err != nil {
return nil, err
}
return &user, nil
}
// CreateUser creates a new user
func (r *UserRepository) CreateUser(user *models.User) error {
return r.db.Create(user).Error
}
// UpdateUser updates an existing user
func (r *UserRepository) UpdateUser(user *models.User) error {
return r.db.Save(user).Error
}
// DeleteUser deletes a user by ID
func (r *UserRepository) DeleteUser(id string) error {
return r.db.Delete(&models.User{}, "id = ?", id).Error
}
// GetUserByEmail retrieves a user by email
func (r *UserRepository) GetUserByEmail(email string) (*models.User, error) {
var user models.User
err := r.db.First(&user, "email = ?", email).Error
if err != nil {
return nil, err
}
return &user, nil
}
// GetUserByUsername retrieves a user by username
func (r *UserRepository) GetUserByUsername(username string) (*models.User, error) {
var user models.User
err := r.db.First(&user, "username = ?", username).Error
if err != nil {
return nil, err
}
return &user, nil
}