mirror of
https://github.com/believethehype/nostrdvm.git
synced 2025-11-20 10:46:33 +01:00
separate dbs per DVM, fix for shared joblists
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
# DATABASE LOGIC
|
||||
import os
|
||||
import sqlite3
|
||||
import time
|
||||
|
||||
@@ -10,10 +9,10 @@ from logging import Filter
|
||||
|
||||
from nostr_sdk import Timestamp, Keys, PublicKey, EventBuilder, Metadata, Filter
|
||||
|
||||
from utils import env
|
||||
from utils.definitions import NEW_USER_BALANCE
|
||||
from utils.nostr_utils import send_event
|
||||
|
||||
|
||||
@dataclass
|
||||
class User:
|
||||
npub: str
|
||||
@@ -26,10 +25,9 @@ class User:
|
||||
lastactive: int
|
||||
|
||||
|
||||
|
||||
def create_sql_table():
|
||||
def create_sql_table(db):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
con = sqlite3.connect(db)
|
||||
cur = con.cursor()
|
||||
cur.execute(""" CREATE TABLE IF NOT EXISTS users (
|
||||
npub text PRIMARY KEY,
|
||||
@@ -48,9 +46,9 @@ def create_sql_table():
|
||||
print(e)
|
||||
|
||||
|
||||
def add_sql_table_column():
|
||||
def add_sql_table_column(db):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
con = sqlite3.connect(db)
|
||||
cur = con.cursor()
|
||||
cur.execute(""" ALTER TABLE users ADD COLUMN lastactive 'integer' """)
|
||||
con.close()
|
||||
@@ -58,9 +56,11 @@ def add_sql_table_column():
|
||||
print(e)
|
||||
|
||||
|
||||
def add_to_sql_table(npub, sats, iswhitelisted, isblacklisted, nip05, lud16, name, lastactive):
|
||||
def add_to_sql_table(db, npub, sats, iswhitelisted, isblacklisted, nip05, lud16, name, lastactive):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
print("ADD: " + str(db))
|
||||
con = sqlite3.connect(db)
|
||||
print("Connected")
|
||||
cur = con.cursor()
|
||||
data = (npub, sats, iswhitelisted, isblacklisted, nip05, lud16, name, lastactive)
|
||||
cur.execute("INSERT or IGNORE INTO users VALUES(?, ?, ?, ?, ?, ?, ?, ?)", data)
|
||||
@@ -70,9 +70,9 @@ def add_to_sql_table(npub, sats, iswhitelisted, isblacklisted, nip05, lud16, nam
|
||||
print(e)
|
||||
|
||||
|
||||
def update_sql_table(npub, sats, iswhitelisted, isblacklisted, nip05, lud16, name, lastactive):
|
||||
def update_sql_table(db, npub, sats, iswhitelisted, isblacklisted, nip05, lud16, name, lastactive):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
con = sqlite3.connect(db)
|
||||
cur = con.cursor()
|
||||
data = (sats, iswhitelisted, isblacklisted, nip05, lud16, name, lastactive, npub)
|
||||
|
||||
@@ -91,32 +91,39 @@ def update_sql_table(npub, sats, iswhitelisted, isblacklisted, nip05, lud16, nam
|
||||
print(e)
|
||||
|
||||
|
||||
def get_from_sql_table(npub):
|
||||
def get_from_sql_table(db, npub):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
con = sqlite3.connect(db)
|
||||
print("Connecting to DB")
|
||||
cur = con.cursor()
|
||||
cur.execute("SELECT * FROM users WHERE npub=?", (npub,))
|
||||
row = cur.fetchone()
|
||||
con.close()
|
||||
user = User
|
||||
user.npub = row[0]
|
||||
user.balance = row[1]
|
||||
user.iswhitelisted = row[2]
|
||||
user.isblacklisted = row[3]
|
||||
user.nip05 = row[4]
|
||||
user.lud16 = row[5]
|
||||
user.name = row[6]
|
||||
user.lastactive = row[7]
|
||||
print(row)
|
||||
if row is None:
|
||||
user = None
|
||||
print("returning None")
|
||||
return user
|
||||
else:
|
||||
user = User
|
||||
user.npub = row[0]
|
||||
user.balance = row[1]
|
||||
user.iswhitelisted = row[2]
|
||||
user.isblacklisted = row[3]
|
||||
user.nip05 = row[4]
|
||||
user.lud16 = row[5]
|
||||
user.name = row[6]
|
||||
user.lastactive = row[7]
|
||||
|
||||
return user
|
||||
return user
|
||||
|
||||
except Error as e:
|
||||
print(e)
|
||||
|
||||
|
||||
def delete_from_sql_table(npub):
|
||||
def delete_from_sql_table(db, npub):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
con = sqlite3.connect(db)
|
||||
cur = con.cursor()
|
||||
cur.execute("DELETE FROM users WHERE npub=?", (npub,))
|
||||
con.commit()
|
||||
@@ -125,24 +132,24 @@ def delete_from_sql_table(npub):
|
||||
print(e)
|
||||
|
||||
|
||||
def clean_db():
|
||||
def clean_db(db):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
con = sqlite3.connect(db)
|
||||
cur = con.cursor()
|
||||
cur.execute("SELECT * FROM users WHERE npub IS NULL OR npub = '' ")
|
||||
rows = cur.fetchall()
|
||||
for row in rows:
|
||||
print(row)
|
||||
delete_from_sql_table(row[0])
|
||||
delete_from_sql_table(db, row[0])
|
||||
con.close()
|
||||
return rows
|
||||
except Error as e:
|
||||
print(e)
|
||||
|
||||
|
||||
def list_db():
|
||||
def list_db(db):
|
||||
try:
|
||||
con = sqlite3.connect(os.getenv(env.USER_DB_PATH))
|
||||
con = sqlite3.connect(db)
|
||||
cur = con.cursor()
|
||||
cur.execute("SELECT * FROM users ORDER BY sats DESC")
|
||||
rows = cur.fetchall()
|
||||
@@ -153,17 +160,16 @@ def list_db():
|
||||
print(e)
|
||||
|
||||
|
||||
def update_user_balance(sender, sats, config=None):
|
||||
user = get_from_sql_table(sender)
|
||||
def update_user_balance(db, sender, sats, config=None):
|
||||
user = get_from_sql_table(db, sender)
|
||||
if user is None:
|
||||
add_to_sql_table(sender, (int(sats) + NEW_USER_BALANCE), False, False,
|
||||
add_to_sql_table(db, sender, (int(sats) + NEW_USER_BALANCE), False, False,
|
||||
"", "", "", Timestamp.now().as_secs())
|
||||
print("NEW USER: " + sender + " Zap amount: " + str(sats) + " Sats.")
|
||||
else:
|
||||
user = get_from_sql_table(sender)
|
||||
user = get_from_sql_table(db, sender)
|
||||
print(str(sats))
|
||||
|
||||
|
||||
if user.nip05 is None:
|
||||
user.nip05 = ""
|
||||
if user.lud16 is None:
|
||||
@@ -172,36 +178,36 @@ def update_user_balance(sender, sats, config=None):
|
||||
user.name = ""
|
||||
|
||||
new_balance = int(user.balance) + int(sats)
|
||||
update_sql_table(sender, new_balance, user.iswhitelisted, user.isblacklisted, user.nip05, user.lud16, user.name,
|
||||
update_sql_table(db, sender, new_balance, user.iswhitelisted, user.isblacklisted, user.nip05, user.lud16,
|
||||
user.name,
|
||||
Timestamp.now().as_secs())
|
||||
print("UPDATE USER BALANCE: " + str(user.name) + " Zap amount: " + str(sats) + " Sats.")
|
||||
|
||||
|
||||
if config is not None:
|
||||
keys = Keys.from_sk_str(config.PRIVATE_KEY)
|
||||
time.sleep(1.0)
|
||||
|
||||
message = ("Added "+ str(sats) + " Sats to balance. New balance is " + str(new_balance) + " Sats. " )
|
||||
|
||||
message = ("Added " + str(sats) + " Sats to balance. New balance is " + str(new_balance) + " Sats. ")
|
||||
|
||||
evt = EventBuilder.new_encrypted_direct_msg(keys, PublicKey.from_hex(sender), message,
|
||||
None).to_event(keys)
|
||||
send_event(evt, key=keys)
|
||||
|
||||
|
||||
def get_or_add_user(sender):
|
||||
user = get_from_sql_table(sender)
|
||||
|
||||
def get_or_add_user(db, sender):
|
||||
user = get_from_sql_table(db, sender)
|
||||
if user is None:
|
||||
add_to_sql_table(sender, NEW_USER_BALANCE, False, False, None,
|
||||
print("Adding User")
|
||||
add_to_sql_table(db, sender, NEW_USER_BALANCE, False, False, None,
|
||||
None, None, Timestamp.now().as_secs())
|
||||
user = get_from_sql_table(sender)
|
||||
user = get_from_sql_table(db, sender)
|
||||
print(user)
|
||||
|
||||
return user
|
||||
|
||||
def update_user_metadata(sender, client):
|
||||
user = get_from_sql_table(sender)
|
||||
|
||||
def update_user_metadata(db, sender, client):
|
||||
user = get_from_sql_table(db, sender)
|
||||
try:
|
||||
profile_filter = Filter().kind(0).author(sender).limit(1)
|
||||
events = client.get_events_of([profile_filter], timedelta(seconds=3))
|
||||
@@ -215,8 +221,7 @@ def update_user_metadata(sender, client):
|
||||
user.lud16 = metadata.get_lud16()
|
||||
except:
|
||||
print("Couldn't get meta information")
|
||||
update_sql_table(user.npub, user.balance, user.iswhitelisted, user.isblacklisted, user.nip05, user.lud16,
|
||||
update_sql_table(db, user.npub, user.balance, user.iswhitelisted, user.isblacklisted, user.nip05, user.lud16,
|
||||
user.name, Timestamp.now().as_secs())
|
||||
user = get_from_sql_table(user.npub)
|
||||
user = get_from_sql_table(db, user.npub)
|
||||
return user
|
||||
|
||||
|
||||
Reference in New Issue
Block a user