[V3 Config] Driver code initial cleanup (#1315)

* Remove get_driver

* Rename self.driver to self._driver

* Do not unnecessarily pass the cog identifier

* Remove unused import

* Fix type annotation

* Missed a keyword rename

* Modify signature of get/set methods in drivers
This commit is contained in:
Will
2018-02-18 22:30:32 -05:00
committed by palmtree5
parent 3984cb8f48
commit f9d846a704
5 changed files with 51 additions and 55 deletions

View File

@@ -2,14 +2,13 @@ from typing import Tuple
__all__ = ["BaseDriver"]
class BaseDriver:
def __init__(self, cog_name):
self.cog_name = cog_name
self.unique_cog_identifier = None # This is set by Config's init method
def get_driver(self):
raise NotImplementedError
async def get(self, identifiers: Tuple[str]):
async def get(self, *identifiers: Tuple[str]):
"""
Finds the value indicate by the given identifiers.
@@ -30,7 +29,7 @@ class BaseDriver:
"""
raise NotImplementedError
async def set(self, identifiers: Tuple[str], value):
async def set(self, *identifiers: Tuple[str], value=None):
"""
Sets the value of the key indicated by the given identifiers.

View File

@@ -41,21 +41,20 @@ class JSON(BaseDriver):
self.data = {}
self.jsonIO._save_json(self.data)
def get_driver(self):
return self
async def get(self, identifiers: Tuple[str]):
async def get(self, *identifiers: Tuple[str]):
partial = self.data
for i in identifiers:
full_identifiers = (self.unique_cog_identifier, *identifiers)
for i in full_identifiers:
partial = partial[i]
return partial
async def set(self, identifiers, value):
async def set(self, *identifiers: str, value=None):
partial = self.data
for i in identifiers[:-1]:
full_identifiers = (self.unique_cog_identifier, *identifiers)
for i in full_identifiers[:-1]:
if i not in partial:
partial[i] = {}
partial = partial[i]
partial[identifiers[-1]] = value
partial[full_identifiers[-1]] = value
await self.jsonIO._threadsafe_save_json(self.data)

View File

@@ -71,16 +71,15 @@ class Mongo(BaseDriver):
uuid, identifiers = identifiers[0], identifiers[1:]
return uuid, identifiers
async def get(self, identifiers: Tuple[str]):
async def get(self, *identifiers: Tuple[str]):
await self._ensure_connected()
uuid, identifiers = self._parse_identifiers(identifiers)
mongo_collection = self.get_collection()
dot_identifiers = '.'.join(identifiers)
partial = await mongo_collection.find_one(
filter={'_id': uuid},
filter={'_id': self.unique_cog_identifier},
projection={dot_identifiers: True}
)
@@ -92,23 +91,19 @@ class Mongo(BaseDriver):
partial = partial[i]
return partial
async def set(self, identifiers: Tuple[str], value):
async def set(self, *identifiers: str, value=None):
await self._ensure_connected()
uuid, identifiers = self._parse_identifiers(identifiers)
dot_identifiers = '.'.join(identifiers)
mongo_collection = self.get_collection()
await mongo_collection.update_one(
{'_id': uuid},
{'_id': self.unique_cog_identifier},
update={"$set": {dot_identifiers: value}},
upsert=True
)
def get_driver(self):
return self
def get_config_details():
host = input("Enter host address: ")