package user import ( "context" "errors" "tercul/internal/domain" ) // UserQueries contains the query handlers for the user aggregate. type UserQueries struct { repo domain.UserRepository } // NewUserQueries creates a new UserQueries handler. func NewUserQueries(repo domain.UserRepository) *UserQueries { return &UserQueries{ repo: repo, } } // GetUserByID retrieves a user by ID. func (q *UserQueries) GetUserByID(ctx context.Context, id uint) (*domain.User, error) { if id == 0 { return nil, errors.New("invalid user ID") } return q.repo.GetByID(ctx, id) } // ListUsers returns a paginated list of users. func (q *UserQueries) ListUsers(ctx context.Context, page, pageSize int) (*domain.PaginatedResult[domain.User], error) { return q.repo.List(ctx, page, pageSize) } // ListUsersByRole returns a list of users by role. func (q *UserQueries) ListUsersByRole(ctx context.Context, role domain.UserRole) ([]domain.User, error) { return q.repo.ListByRole(ctx, role) }