예제 #1
0
 def from_user_and_problem_and_contest(user, problem, contest):
     query = "SELECT * FROM submission WHERE user_id = %s AND problem_id = %s AND contest_id = %s ORDER BY timestamp DESC"
     return database.query_all(query,
                               user.id,
                               problem.id,
                               contest.id,
                               convert=Submission)
예제 #2
0
 def of_user(user):
     query = """
         SELECT c.*
         FROM contest c JOIN user_contest uc ON c.id = uc.contest_id
         WHERE uc.user_id = %s
     """
     return database.query_all(query, user.id, convert=Contest)
예제 #3
0
 def from_contest(contest):
     query = """
         SELECT p.id, p.name, p.title, p.location
         FROM problem p JOIN problem_contest pc ON p.id = pc.problem_id
         WHERE pc.contest_id = %s 
     """
     return database.query_all(query, contest.id, convert=Problem)
예제 #4
0
 def from_submission(submission, event_type=None, after=0):
     if event_type is None:
         t = ""
     else:
         t = f"AND type = '{event_type.value.upper()}'"
     query = f"SELECT * FROM evaluation_event WHERE submission_id = %s {t} AND serial > %s ORDER BY serial"
     return database.query_all(query,
                               submission.id,
                               after,
                               convert=EvaluationEvent)
예제 #5
0
 def with_problem(problem):
     query = "SELECT c.* FROM contest c JOIN problem_contest pc ON c.id = pc.contest_id WHERE pc.problem_id = %s"
     return database.query_all(query, problem.id, convert=Contest)
예제 #6
0
 def contests():
     query = "SELECT * FROM contest"
     return database.query_all(query, convert=Contest)
예제 #7
0
 def problems():
     query = "SELECT * FROM problem"
     return database.query_all(query, convert=Problem)
예제 #8
0
 def goals(self):
     query = "SELECT * FROM goal WHERE problem_id = %s"
     return database.query_all(query, self.id, convert=Goal)
예제 #9
0
 def from_submission(submission):
     query = "SELECT ag.goal_id, ag.result FROM acquired_goal ag WHERE ag.submission_id = %s"
     for id, result in database.query_all(query, submission.id):
         yield database.query_one("SELECT * FROM goal WHERE id = %s",
                                  id,
                                  convert=Goal), bool(result)