修复匹配时候忽视了word_type的约束

This commit is contained in:
LambdaYH 2022-08-21 23:42:46 +08:00
parent 3bb9aaf637
commit f570bffcf7

View File

@ -234,19 +234,21 @@ class WordBank(db.Model):
query = query.where(cls.word_scope == word_type)
sql_text += f" and word_scope = {word_scope}"
# 完全匹配
if await query.where(cls.problem == problem).gino.first():
if await query.where(((cls.word_type == 0) | (cls.word_type == 3)) & (cls.problem == problem)).gino.first():
return query.where(cls.problem == problem)
# 模糊匹配
if await query.where((cls.word_type == 1) & (cls.problem.contains(problem))).gino.first():
return query.where(cls.problem.contains(problem))
# 正则匹配
if await db.first(
db.text(sql_text + f" and word_type = 2 and '{problem}' ~ problem;")
db.text(sql_text + f" and word_type = 2 and word_scope != 999 and '{problem}' ~ problem;")
):
return sql_text + f" and word_type = 2 and '{problem}' ~ problem;"
# 模糊匹配
if await db.first(
db.text(sql_text + f" and word_type = 1 and '{problem}' ~ problem;")
):
return sql_text + f" and word_type = 1 and '{problem}' ~ problem;"
return None
return sql_text + f" and word_type = 2 and word_scope != 999 and '{problem}' ~ problem;"
# if await db.first(
# db.text(sql_text + f" and word_type = 1 and word_scope != 999 and '{problem}' ~ problem;")
# ):
# return sql_text + f" and word_type = 1 and word_scope != 999 and '{problem}' ~ problem;"
# return None
@classmethod
async def get_answer(
@ -456,4 +458,4 @@ class WordBank(db.Model):
)
problem_list.append(problem)
_tmp.append(q.problem)
return problem_list
return problem_list