Fix duplication bug

main
ado 2024-06-17 07:06:04 -04:00
parent 1d74ef7760
commit d3de3c7b21
1 changed files with 26 additions and 17 deletions

View File

@ -5,30 +5,36 @@ import sqlite3
def get_food(): def get_food():
foods = [ foods = ["no spoilers"]
"no spoilers",
]
food = foods[random.randint(0, len(foods) - 1)] food = foods[random.randint(0, len(foods) - 1)]
return food return food
def get_cur_and_ensure_table(): def get_cur_and_ensure_table(db_con):
db_con = sqlite3.connect("lionseat.db")
cur = db_con.cursor() cur = db_con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS used(used TEXT)") cur.execute("CREATE TABLE IF NOT EXISTS used(used TEXT)")
return cur
def get_unique_food(cursor): def record_usage(cursor, my_food):
max_attempts = 10 cursor.execute("INSERT INTO USED(used) values (?)", (my_food,))
def is_already_used(cursor, my_food):
cursor.execute("SELECT used FROM Used where used = ?", (my_food,))
result = cursor.fetchone()
return result is not None
def get_unique_food(db_con):
cursor = db_con.cursor()
max_attempts = 3
current_attempt = 1 current_attempt = 1
while True and current_attempt < max_attempts: while True and current_attempt < max_attempts:
current_attempt = current_attempt + 1 current_attempt = current_attempt + 1
my_food = get_food() my_food = get_food()
cursor.execute("SELECT used FROM Used WHERE used = ?", (my_food,)) used = is_already_used(cursor, my_food)
result = cursor.fetchone() if not used:
if not result: record_usage(cursor, my_food)
return my_food return my_food
@ -50,8 +56,11 @@ def get_masto_client_and_login():
return mastodon return mastodon
food = get_unique_food(cursor=get_cur_and_ensure_table()) with sqlite3.connect("lionseat.db") as db_con:
get_cur_and_ensure_table(db_con)
food = get_unique_food(db_con)
if food is not None: if food is not None:
status = f"Lions will eat {food}" status = f"Lions will eat {food}"
print(status)
mastodon = get_masto_client_and_login() mastodon = get_masto_client_and_login()
mastodon.status_post(status, visibility="public") mastodon.status_post(status, visibility="public")