Add cv_engine package.
This commit is contained in:
73
cv_engine/engine.py
Normal file
73
cv_engine/engine.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import json
|
||||
import os
|
||||
import itertools
|
||||
|
||||
from jsondiff import diff
|
||||
|
||||
from cv_engine.database import CardvaultDB
|
||||
from cv_engine.util import EngineConfig, Utilities
|
||||
|
||||
|
||||
class CardvaultEngine:
|
||||
def __init__(self, config_file=False):
|
||||
"""
|
||||
Create a new cv_engine instance
|
||||
:param config_file: File path of the configuration file
|
||||
"""
|
||||
if config_file:
|
||||
Utilities.apply_config(config_file)
|
||||
db_file_path = os.path.join(EngineConfig.config_path, EngineConfig.db_file)
|
||||
self.database = CardvaultDB(db_file_path)
|
||||
|
||||
def get_card(self, card_id):
|
||||
"""
|
||||
Load a card object from database
|
||||
:param card_id: multiverse id of a card
|
||||
:return: an cv_engine.model.Card object
|
||||
"""
|
||||
return self.database.card_load(card_id)
|
||||
|
||||
def get_library(self) -> list:
|
||||
"""
|
||||
Get the complete library of cards
|
||||
:return: Alphabetically ordered list of all cards in library
|
||||
"""
|
||||
return self.database.lib_get_all()
|
||||
|
||||
def get_all_categories(self) -> dict:
|
||||
"""
|
||||
Get all categories an the cards that are contained within them
|
||||
:return: A dict with the category names and cv_engine.models.Card objects as values
|
||||
"""
|
||||
categories = self.database.category_get_all()
|
||||
all_ids = set(itertools.chain.from_iterable(categories.values()))
|
||||
card_objects = {card_id: self.database.card_load(card_id) for card_id in all_ids}
|
||||
for _, card_id_list in categories:
|
||||
for card_id in card_id_list:
|
||||
card_id_list[card_id] = card_objects[card_id]
|
||||
return categories
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
engine = CardvaultEngine()
|
||||
|
||||
# Insert Data into Datasbase
|
||||
# print("Database insert test:")
|
||||
# engine.database.db_clear_data_card()
|
||||
# cards = Utilities.parse_mtgjson_cards(json.load(open("/home/luxick/Downloads/AllSets-x.json")))
|
||||
# engine.database.card_insert_many(cards)
|
||||
|
||||
# Compare JSON Data to Data in Database
|
||||
# for card in Utilities.parse_mtgjson_cards(json.load(open("/home/luxick/Downloads/AllSets-x.json"))):
|
||||
# if card.multiverse_id:
|
||||
# print('From JSON: {}'.format(card.names))
|
||||
# print('From DB: {}\n'.format(engine.database.card_load(card.multiverse_id).names))
|
||||
|
||||
# Search test
|
||||
# term = 'fire'
|
||||
# for result in engine.database.card_search_by_name(term):
|
||||
# print(str(result), end='\n\n')
|
||||
# Fast load test
|
||||
# engine.database.card_fast_load()
|
||||
# all_ids = engine.database.db_all_multiverse_ids()
|
||||
# print('Loaded IDs: {}'.format(len(all_ids)))
|
||||
Reference in New Issue
Block a user