1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 20:43:12 +00:00
Lumi/services/item_service.py
2024-08-14 06:37:48 -04:00

69 lines
1.8 KiB
Python

import sqlite3
from loguru import logger
from db import database
class Item:
def __init__(self, item_id):
self.id = item_id
data = self.get_item_data()
self.name = data[0]
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 = """
SELECT name, display_name, description, image_url, emote_id, quote, type
FROM item
WHERE id = %s
"""
return database.select_query(query, (self.id,))[0]
def get_quantity(self, author_id):
query = """
SELECT COALESCE((SELECT quantity FROM inventory WHERE user_id = %s AND item_id = %s), 0) AS quantity
"""
return database.select_query_one(query, (author_id, self.id))
def get_item_worth(self):
query = """
SELECT worth
FROM ShopItem
WHERE item_id = %s
"""
return database.select_query_one(query, (self.id,))
@staticmethod
def get_all_item_names():
query = "SELECT display_name FROM item"
try:
items = database.select_query(query)
return [item[0] for item in items]
except sqlite3.Error:
logger.error(sqlite3.Error)
return []
@staticmethod
def get_item_by_display_name(display_name):
query = "SELECT id FROM item WHERE display_name = %s"
item_id = database.select_query_one(query, (display_name,))
return Item(item_id)
@staticmethod
def get_item_by_name(name):
query = "SELECT id FROM item WHERE name = %s"
item_id = database.select_query_one(query, (name,))
return Item(item_id)