52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
|
import importlib
|
||
|
|
||
|
|
||
|
class PseudoDB:
|
||
|
def __init__(self, datasource="default.data"):
|
||
|
self.datasource = datasource
|
||
|
self.data = self.load_data()
|
||
|
|
||
|
def load_data(self):
|
||
|
module_name = self.datasource.replace('.py', '')
|
||
|
try:
|
||
|
module = importlib.import_module(module_name)
|
||
|
return module
|
||
|
except ImportError:
|
||
|
print(f"Data module '{module_name}' not found.")
|
||
|
return None
|
||
|
|
||
|
def data_list(self):
|
||
|
# Check if default has been successfully loaded
|
||
|
if self.data is not None:
|
||
|
attr_names = []
|
||
|
for attr_name in dir(self.data):
|
||
|
if not attr_name.startswith('__'):
|
||
|
attr_names.append(attr_name)
|
||
|
return attr_names
|
||
|
else:
|
||
|
return []
|
||
|
|
||
|
def collections(self, attr_name):
|
||
|
if self.data is not None:
|
||
|
return getattr(self.data, attr_name)
|
||
|
else:
|
||
|
return None
|
||
|
|
||
|
def get_keys(self, attr_name):
|
||
|
if self.data is not None:
|
||
|
collection = getattr(self.data, attr_name)
|
||
|
if isinstance(collection, dict):
|
||
|
return list(collection.keys())
|
||
|
else:
|
||
|
return {}
|
||
|
|
||
|
def get_values(self, attr_name, key):
|
||
|
if self.data is not None:
|
||
|
collection = getattr(self.data, attr_name)
|
||
|
if isinstance(collection, dict):
|
||
|
return list(collection[key])
|
||
|
else:
|
||
|
return collection
|
||
|
else:
|
||
|
return None
|