Source code for lodstorage.storageconfig
"""
Created on 2020-08-29
@author: wf
"""
import os
from enum import Enum
from pathlib import Path
[docs]
class StoreMode(Enum):
"""
possible supported storage modes
"""
JSONPICKLE = 1 # JSON Pickle
JSON = 2
SQL = 3
SPARQL = 4
YAML = 5
[docs]
class StorageConfig(object):
"""
a storage configuration
"""
[docs]
def getCachePath(self, ensureExists=True) -> str:
"""
get the path to the default cache
Args:
name(str): the name of the cache to use
"""
cachedir = f"{self.cacheRootDir}/.{self.cacheDirName}"
if ensureExists:
if not os.path.exists(cachedir):
os.makedirs(cachedir)
return cachedir
def __init__(
self,
mode=StoreMode.SQL,
cacheRootDir: str = None,
cacheDirName: str = "lodstorage",
cacheFile=None,
withShowProgress=True,
profile=True,
debug=False,
errorDebug=True,
):
"""
Constructor
Args:
mode(StoreMode): the storage mode e.g. sql
cacheRootDir(str): the cache root directory to use - if None the home directory will be used
cacheFile(string): the common cacheFile to use (if any)
withShowProgress(boolean): True if progress should be shown
profile(boolean): True if timing / profiling information should be shown
debug(boolean): True if debugging information should be shown
errorDebug(boolean): True if debug info should be provided on errors (should not be used for production since it might reveal data)
"""
if cacheRootDir is None:
home = str(Path.home())
self.cacheRootDir = f"{home}"
else:
self.cacheRootDir = cacheRootDir
self.cacheDirName = cacheDirName
self.mode = mode
self.cacheFile = cacheFile
self.profile = profile
self.withShowProgress = withShowProgress
self.debug = debug
self.errorDebug = errorDebug
[docs]
@staticmethod
def getDefault(debug=False):
return StorageConfig.getSQL(debug)
[docs]
@staticmethod
def getSQL(debug=False):
config = StorageConfig(mode=StoreMode.SQL, debug=debug)
config.tableName = None
return config
[docs]
@staticmethod
def getJSON(debug=False):
config = StorageConfig(mode=StoreMode.JSON, debug=debug)
return config
[docs]
@staticmethod
def getJsonPickle(debug=False):
config = StorageConfig(mode=StoreMode.JSONPICKLE, debug=debug)
return config
[docs]
@staticmethod
def getSPARQL(prefix, endpoint, host, debug=False):
config = StorageConfig(mode=StoreMode.SPARQL, debug=debug)
config.prefix = prefix
config.host = host
config.endpoint = endpoint
return config
[docs]
@staticmethod
def getYaml(debug=False):
config = StorageConfig(mode=StoreMode.YAML, debug=debug)
return config