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 }