50
def update_user_question_count(user_id, topic, reduce=True, initial_num_questions=None):
with sqlite3.connect('topics.db') as conn:
cursor = conn.cursor()
#try to reduce the question count
if reduce:
print(f"reduce num_questions for user_id: {user_id}, topic: {topic}")
cursor.execute('''
UPDATE user_topics
SET num_questions = num_questions - 1
WHERE user_id = ? AND topic = ?
''', (user_id, topic))
#ff the number of questions is below 0 sit must be set to 0
cursor.execute('''
UPDATE user_topics
SET num_questions = 0
WHERE user_id = ? AND topic = ? AND num_questions < 0
''', (user_id, topic))
else:
print(f"set num_questions for user_id: {user_id}, topic: {topic}")
#insert the number of questions for user and topic
#if the same user id or topic already exists ignore will ignore the insertion and
preventing an error or a duplication of user id
cursor.execute('''
INSERT
OR
IGNORE
INTO
user_topics
(user_id,
topic,
num_questions,
initial_num_questions)
VALUES (?, ?, ?, ?)
''', (user_id, topic, initial_num_questions, initial_num_questions))
#commit to ensure saving data
conn.commit()
Η get_user_question_count επιστρέφει τον αριθμό των διαθέσιμων ερωτήσεων για τον
εκάστοτε χρήστη σε συγκεκριμένη θεματική. Σε περίπτωση που υπάρχει αποτέλεσμα
επιστρέφεται ο αριθμός των ερωτήσεων που έχουν απομείνει, διαφορετικά τυπώνεται μήνυμα
στο τερματικό που ενημερώνει για τη μη ύπαρξη ερωτήσεων για το συγκεκριμένο χρήστη ή
θεματική.
def get_user_question_count(user_id, topic):
with sqlite3.connect('topics.db') as conn:
cursor = conn.cursor()
#select the number of users questions for current topic
cursor.execute('SELECT num_questions FROM user_topics WHERE user_id = ? AND topic = ?',
(user_id, topic))
result = cursor.fetchone()
if result:
#return the number of remaining questions
return result[0]
else:
print(f"No questions found for user_id {user_id} and topic {topic}.")
return 0