OTPSystem/db.py

92 lines
3.2 KiB
Python

import sqlite3
from datetime import datetime, timedelta
class db:
def init():
try:
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS sessions (email text UNIQUE, password integer, code integer, datedel text)''')
cursor.execute('''CREATE TABLE IF NOT EXISTS accounts (email text UNIQUE, password integer)''')
conn.commit()
conn.close()
return True
except:
return False
def get_session_passwd(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
passwd = '''SELECT password FROM sessions WHERE email = ? LIMIT 1'''
cursor.execute(passwd, (email, ))
fetch_passwd = cursor.fetchone()
conn.close()
return fetch_passwd[0]
def del_session(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
session = '''DELETE FROM sessions WHERE email = ?'''
cursor.execute(session, (email, ))
conn.commit()
conn.close()
return True
def get_session(email):
exists = '''SELECT email FROM sessions WHERE email = ? LIMIT 1'''
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
cursor.execute(exists, (email, ))
result = cursor.fetchone()
conn.close()
return result
def check_date(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
past_sql = '''SELECT datedel FROM sessions WHERE email = ? LIMIT 1'''
cursor.execute(past_sql, (email, ))
fetch_past = cursor.fetchone()
past = fetch_past[0]
conn.close()
return past
def fetch_session_code(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
match_sql = '''SELECT code FROM sessions WHERE email = ? LIMIT 1'''
cursor.execute(match_sql, (email, ))
fetch_otp = cursor.fetchone()
otp = fetch_otp[0]
conn.close()
return otp
def add_session(email, password, code):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
insert_email = "INSERT OR IGNORE INTO sessions (email) VALUES (?)"
insert_password = "UPDATE sessions SET password = ? WHERE email = ?"
insert_code = "UPDATE sessions SET code = ? WHERE email = ?"
insert_datedel = "UPDATE sessions SET datedel = ? WHERE email = ?"
cursor.execute(insert_email, (email, ))
cursor.execute(insert_password, (password, email, ))
cursor.execute(insert_code, (code, email, ))
cursor.execute(insert_datedel, (datetime.now() + timedelta(minutes=5), email, ))
conn.commit()
conn.close()
return True
def add_account(email, password):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
insert_email = "INSERT OR IGNORE INTO accounts (email) VALUES (?)"
insert_password = "UPDATE accounts SET password = ? WHERE email = ?"
cursor.execute(insert_email, (email, ))
cursor.execute(insert_password, (password, email, ))
conn.commit()
conn.close()
return True