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