feat(tester): extend ListProblems endpoint
This commit is contained in:
parent
81d7aa2366
commit
251772a049
8 changed files with 76 additions and 4 deletions
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue