package repository import ( "evanpage-backend/internal/domain" "gorm.io/gorm" ) type UserRepository struct { db *gorm.DB } func NewUserRepository(db *gorm.DB) *UserRepository { return &UserRepository{db: db} } func (r *UserRepository) Create(user *domain.User) error { return r.db.Create(user).Error } func (r *UserRepository) FindByID(id uint) (*domain.User, error) { var user domain.User err := r.db.First(&user, id).Error return &user, err } func (r *UserRepository) FindByUsername(username string) (*domain.User, error) { var user domain.User err := r.db.Where("username = ?", username).First(&user).Error return &user, err } func (r *UserRepository) FindByEmail(email string) (*domain.User, error) { var user domain.User err := r.db.Where("email = ?", email).First(&user).Error return &user, err } func (r *UserRepository) FindByKeycloakID(keycloakID string) (*domain.User, error) { var user domain.User err := r.db.Where("keycloak_id = ?", keycloakID).First(&user).Error return &user, err } func (r *UserRepository) ListAll() ([]domain.User, error) { var users []domain.User err := r.db.Select("id", "username", "email", "role", "keycloak_id", "created_at", "updated_at").Find(&users).Error return users, err } func (r *UserRepository) Update(user *domain.User) error { return r.db.Save(user).Error } func (r *UserRepository) Delete(id uint) error { return r.db.Delete(&domain.User{}, id).Error } func (r *UserRepository) Count() (int64, error) { var count int64 err := r.db.Model(&domain.User{}).Count(&count).Error return count, err }