import mysql.connector import os import dotenv import json import random dotenv.load_dotenv() # Database connection dbargs = { 'host':os.getenv('DB_HOST'), 'user':os.getenv('DB_USER'), 'password':os.getenv('DB_PASSWORD'), 'database':os.getenv('DB_NAME') } def check_tables(): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( id INT(11) NOT NULL AUTO_INCREMENT, email VARCHAR(255) NOT NULL, domain VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, token VARCHAR(255) NOT NULL, PRIMARY KEY (id) ) """) cursor.execute(""" CREATE TABLE IF NOT EXISTS site ( id INT(11) NOT NULL AUTO_INCREMENT, domain VARCHAR(255) NOT NULL, data JSON, PRIMARY KEY (id) ) """) cursor.close() connection.close() print("Checked tables") def add_user(email,domain,password,token): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" INSERT INTO users (email, domain, password, token) VALUES (%s, %s, %s, %s) """, (email, domain, password, token)) connection.commit() cursor.close() connection.close() def search_users(email): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" SELECT * FROM users WHERE email = %s """, (email,)) users = cursor.fetchall() cursor.close() connection.close() return users def search_users_domain(domain): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" SELECT * FROM users WHERE domain = %s """, (domain,)) users = cursor.fetchall() cursor.close() connection.close() return users def search_users_token(token): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() query = "SELECT * FROM users WHERE token LIKE %s" cursor.execute(query, ('%' + token + '%',)) users = cursor.fetchall() cursor.close() connection.close() return users def update_tokens(id,tokens): tokens = ','.join(tokens) connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" UPDATE users SET token = %s WHERE id = %s """, (tokens, id)) connection.commit() cursor.close() connection.close() def get_website_data(domain): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" SELECT * FROM site WHERE domain = %s """, (domain,)) data = cursor.fetchall() cursor.close() connection.close() if data == []: # Create new entry connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() data = { "data": "" } insert_query = "INSERT INTO site (data,domain) VALUES (%s,%s)" cursor.execute(insert_query, (json.dumps(data), domain)) connection.commit() cursor.close() connection.close() return "" parsed = data[0][2] parsed = json.loads(parsed) parsed = parsed['data'] # Decoding parsed = parsed.encode('utf-8').decode('unicode-escape') return parsed def get_website_data_raw(domain): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" SELECT * FROM site WHERE domain = %s """, (domain,)) data = cursor.fetchall() cursor.close() connection.close() if data == []: # Create new entry connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() data = { "data": "" } insert_query = "INSERT INTO site (data,domain) VALUES (%s,%s)" cursor.execute(insert_query, (json.dumps(data), domain)) connection.commit() cursor.close() connection.close() return "" parsed = data[0][2] parsed = json.loads(parsed) return parsed def update_website_data(domain,data): data = get_website_data_raw(domain) connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() # Update json object data['data'] = data update_query = "UPDATE site SET data = %s WHERE domain = %s" cursor.execute(update_query, (json.dumps(data), domain)) connection.commit() cursor.close() connection.close() def update_website_data_raw(domain,data): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() # Update json object data = json.loads(data) update_query = "UPDATE site SET data = %s WHERE domain = %s" cursor.execute(update_query, (json.dumps(data), domain)) connection.commit() cursor.close() connection.close() def update_website_wallet(domain,token,address): data = get_website_data_raw(domain) connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() # Update json object data[token] = address update_query = "UPDATE site SET data = %s WHERE domain = %s" cursor.execute(update_query, (json.dumps(data), domain)) connection.commit() cursor.close() connection.close() def get_random_sites(): connection = mysql.connector.connect(**dbargs) cursor = connection.cursor() cursor.execute(""" SELECT * FROM site """) data = cursor.fetchall() cursor.close() connection.close() # Randomly pick 5 if len(data) > 5: data = random.sample(data,5) names = [] for site in data: names.append(site[1]) return names