feat(tester): extend ListProblems endpoint

This commit is contained in:
Vyacheslav1557 2025-03-02 13:41:24 +05:00
parent 81d7aa2366
commit 251772a049
8 changed files with 76 additions and 4 deletions

View file

@ -67,3 +67,33 @@ func (r *ProblemRepository) DeleteProblem(ctx context.Context, id int32) error {
return nil
}
const (
ListProblemsQuery = `SELECT id, title, time_limit, memory_limit, created_at, updated_at
FROM problems
LIMIT ? OFFSET ?`
CountProblemsQuery = "SELECT COUNT(*) FROM problems"
)
func (r *ProblemRepository) ListProblems(ctx context.Context, page int32, pageSize int32) ([]*models.ProblemListItem, int32, error) {
const op = "ContestRepository.ListProblems"
if pageSize > 20 || pageSize < 1 {
pageSize = 1
}
var problems []*models.ProblemListItem
query := r.db.Rebind(ListProblemsQuery)
err := r.db.SelectContext(ctx, &problems, query, pageSize, (page-1)*pageSize)
if err != nil {
return nil, 0, handlePgErr(err, op)
}
var count int32
err = r.db.GetContext(ctx, &count, CountProblemsQuery)
if err != nil {
return nil, 0, handlePgErr(err, op)
}
return problems, count, nil
}