mirror of
https://github.com/believethehype/nostrdvm.git
synced 2025-10-08 21:53:24 +02:00
180 lines
5.7 KiB
Python
180 lines
5.7 KiB
Python
import sqlite3
|
|
from dataclasses import dataclass
|
|
from sqlite3 import Error
|
|
|
|
|
|
@dataclass
|
|
class Subscription:
|
|
id: str
|
|
recipent: str
|
|
subscriber: str
|
|
nwc: str
|
|
cadence: str
|
|
amount: int
|
|
unit: str
|
|
begin: int
|
|
end: int
|
|
tier_dtag: str
|
|
zaps: str
|
|
recipe: str
|
|
active: bool
|
|
lastupdate: int
|
|
tier: str
|
|
|
|
|
|
def create_subscription_sql_table(db):
|
|
try:
|
|
import os
|
|
if not os.path.exists(r'db'):
|
|
os.makedirs(r'db')
|
|
if not os.path.exists(r'outputs'):
|
|
os.makedirs(r'outputs')
|
|
con = sqlite3.connect(db)
|
|
cur = con.cursor()
|
|
cur.execute(""" CREATE TABLE IF NOT EXISTS subscriptions (
|
|
id text PRIMARY KEY,
|
|
recipient text,
|
|
subscriber text,
|
|
nwc text NOT NULL,
|
|
cadence text,
|
|
amount int,
|
|
unit text,
|
|
begin int,
|
|
end int,
|
|
tier_dtag text,
|
|
zaps text,
|
|
recipe text,
|
|
active boolean,
|
|
lastupdate int,
|
|
tier text
|
|
|
|
|
|
); """)
|
|
cur.execute("SELECT name FROM sqlite_master")
|
|
con.close()
|
|
|
|
except Error as e:
|
|
print(e)
|
|
|
|
|
|
def add_to_subscription_sql_table(db, id, recipient, subscriber, nwc, cadence, amount, unit, begin, end, tier_dtag,
|
|
zaps,
|
|
recipe, active, lastupdate, tier):
|
|
try:
|
|
con = sqlite3.connect(db)
|
|
cur = con.cursor()
|
|
data = (
|
|
id, recipient, subscriber, nwc, cadence, amount, unit, begin, end, tier_dtag, zaps, recipe, active, lastupdate,
|
|
tier)
|
|
print(id)
|
|
print(recipient)
|
|
print(subscriber)
|
|
print(nwc)
|
|
cur.execute("INSERT or IGNORE INTO subscriptions VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", data)
|
|
con.commit()
|
|
con.close()
|
|
except Error as e:
|
|
print("Error when Adding to DB: " + str(e))
|
|
|
|
|
|
def get_from_subscription_sql_table(db, id):
|
|
try:
|
|
con = sqlite3.connect(db)
|
|
cur = con.cursor()
|
|
cur.execute("SELECT * FROM subscriptions WHERE id=?", (id,))
|
|
row = cur.fetchone()
|
|
con.close()
|
|
if row is None:
|
|
return None
|
|
else:
|
|
subscription = Subscription
|
|
subscription.id = row[0]
|
|
subscription.recipent = row[1]
|
|
subscription.subscriber = row[2]
|
|
subscription.nwc = row[3]
|
|
subscription.cadence = row[4]
|
|
subscription.amount = row[5]
|
|
subscription.unit = row[6]
|
|
subscription.begin = row[7]
|
|
subscription.end = row[8]
|
|
subscription.tier_dtag = row[9]
|
|
subscription.zaps = row[10]
|
|
subscription.recipe = row[11]
|
|
subscription.active = row[12]
|
|
subscription.lastupdate = row[13]
|
|
subscription.tier = row[14]
|
|
|
|
return subscription
|
|
|
|
except Error as e:
|
|
print("Error Getting from DB: " + str(e))
|
|
return None
|
|
|
|
|
|
def get_all_subscriptions_from_sql_table(db):
|
|
try:
|
|
con = sqlite3.connect(db)
|
|
cursor = con.cursor()
|
|
|
|
sqlite_select_query = """SELECT * from subscriptions"""
|
|
cursor.execute(sqlite_select_query)
|
|
records = cursor.fetchall()
|
|
subscriptions = []
|
|
for row in records:
|
|
subscriptions.append(
|
|
Subscription(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10],
|
|
row[11], row[12], row[13], row[14]))
|
|
cursor.close()
|
|
return subscriptions
|
|
|
|
except sqlite3.Error as error:
|
|
print("Failed to read data from sqlite table", error)
|
|
finally:
|
|
if con:
|
|
con.close()
|
|
# print("The SQLite connection is closed")
|
|
|
|
|
|
def delete_from_subscription_sql_table(db, id):
|
|
try:
|
|
con = sqlite3.connect(db)
|
|
cur = con.cursor()
|
|
cur.execute("DELETE FROM subscriptions WHERE id=?", (id,))
|
|
con.commit()
|
|
con.close()
|
|
except Error as e:
|
|
print(e)
|
|
|
|
|
|
def update_subscription_sql_table(db, id, recipient, subscriber, nwc, cadence, amount, unit, begin, end, tier_dtag,
|
|
zaps,
|
|
recipe, active, lastupdate, tier):
|
|
try:
|
|
con = sqlite3.connect(db)
|
|
cur = con.cursor()
|
|
data = (
|
|
recipient, subscriber, nwc, cadence, amount, unit, begin, end, tier_dtag, zaps, recipe, active, lastupdate,
|
|
tier, id)
|
|
|
|
cur.execute(""" UPDATE subscriptions
|
|
SET recipient = ? ,
|
|
subscriber = ? ,
|
|
nwc = ? ,
|
|
cadence = ? ,
|
|
amount = ? ,
|
|
unit = ? ,
|
|
begin = ? ,
|
|
end = ?,
|
|
tier_dtag = ?,
|
|
zaps = ?,
|
|
recipe = ?,
|
|
active = ?,
|
|
lastupdate = ?,
|
|
tier = ?
|
|
|
|
WHERE id = ?""", data)
|
|
con.commit()
|
|
con.close()
|
|
except Error as e:
|
|
print("Error Updating DB: " + str(e))
|