2023-06-22 18:11:48 +00:00
|
|
|
import json
|
2023-06-28 13:28:02 +00:00
|
|
|
import sqlite3
|
2023-06-22 18:11:48 +00:00
|
|
|
|
|
|
|
from db import database
|
|
|
|
|
|
|
|
|
|
|
|
class Item:
|
|
|
|
def __init__(self, item_id):
|
2023-06-28 13:28:02 +00:00
|
|
|
self.id = item_id
|
2023-06-22 18:11:48 +00:00
|
|
|
|
|
|
|
data = self.get_item_data()
|
|
|
|
|
2023-06-28 13:28:02 +00:00
|
|
|
self.name = data[0]
|
2023-06-22 18:11:48 +00:00
|
|
|
self.display_name = data[1]
|
|
|
|
self.description = data[2]
|
|
|
|
self.image_url = data[3]
|
|
|
|
self.emote_id = data[4]
|
|
|
|
self.quote = data[5]
|
|
|
|
self.type = data[6]
|
|
|
|
|
|
|
|
def get_item_data(self):
|
|
|
|
query = """
|
2023-06-28 13:28:02 +00:00
|
|
|
SELECT name, display_name, description, image_url, emote_id, quote, type
|
2023-06-22 18:11:48 +00:00
|
|
|
FROM item
|
2023-06-28 13:28:02 +00:00
|
|
|
WHERE id = ?
|
2023-06-22 18:11:48 +00:00
|
|
|
"""
|
|
|
|
|
2023-06-28 13:28:02 +00:00
|
|
|
data = database.select_query(query, (self.id,))[0]
|
|
|
|
return data
|
|
|
|
|
|
|
|
def get_quantity(self, author_id):
|
|
|
|
query = """
|
|
|
|
SELECT COALESCE((SELECT quantity FROM inventory WHERE user_id = ? AND item_id = ?), 0) AS quantity
|
|
|
|
"""
|
|
|
|
|
|
|
|
quantity = database.select_query_one(query, (author_id, self.id))
|
|
|
|
|
|
|
|
return quantity
|
2023-06-22 18:11:48 +00:00
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def insert_items():
|
|
|
|
with open("config/default_items.json", 'r') as file:
|
|
|
|
items_data = json.load(file)
|
|
|
|
|
|
|
|
for index, (item_id, item_data) in enumerate(items_data.items(), start=1):
|
2023-06-28 13:28:02 +00:00
|
|
|
name = item_data["name"]
|
2023-06-22 18:11:48 +00:00
|
|
|
display_name = item_data["display_name"]
|
|
|
|
description = item_data["description"]
|
|
|
|
image_url = item_data["image_url"]
|
|
|
|
emote_id = item_data["emote_id"]
|
|
|
|
quote = item_data["quote"]
|
2023-06-28 13:28:02 +00:00
|
|
|
item_type = item_data["type"]
|
2023-06-22 18:11:48 +00:00
|
|
|
|
|
|
|
query = """
|
2023-06-28 13:28:02 +00:00
|
|
|
INSERT OR REPLACE INTO item
|
|
|
|
(id, name, display_name, description, image_url, emote_id, quote, type)
|
|
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
|
|
"""
|
2023-06-22 18:11:48 +00:00
|
|
|
database.execute_query(query,
|
2023-06-28 13:28:02 +00:00
|
|
|
(index, name, display_name, description, image_url, emote_id, quote, item_type))
|
2023-06-22 18:11:48 +00:00
|
|
|
|
|
|
|
print("Items inserted into the database successfully.")
|
2023-06-28 13:28:02 +00:00
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def get_all_item_names():
|
|
|
|
query = "SELECT display_name FROM item"
|
|
|
|
|
|
|
|
try:
|
|
|
|
item_names = []
|
|
|
|
items = database.select_query(query)
|
|
|
|
|
|
|
|
for item in items:
|
|
|
|
item_names.append(item[0])
|
|
|
|
|
|
|
|
return item_names
|
|
|
|
|
|
|
|
except sqlite3.Error:
|
|
|
|
print(sqlite3.Error)
|
|
|
|
return []
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def get_item_by_display_name(display_name):
|
|
|
|
query = "SELECT id FROM item WHERE display_name = ?"
|
|
|
|
item_id = database.select_query_one(query, (display_name,))
|
|
|
|
return Item(item_id)
|