Create DB connection

This commit is contained in:
Dusty.P 2018-06-12 00:04:51 -08:00
parent a4fa30f001
commit f8b0771520
2 changed files with 28 additions and 7 deletions

View File

@ -19,6 +19,7 @@ from discord.ext import commands
from src.config.config import LoadConfig from src.config.config import LoadConfig
from src.shared_libs.loggable import Loggable from src.shared_libs.loggable import Loggable
from src.shared_libs.ioutils import in_here from src.shared_libs.ioutils import in_here
from src.shared_libs import database
# Init logging to output on INFO level to stderr. # Init logging to output on INFO level to stderr.
@ -52,6 +53,9 @@ class SebiMachine(commands.Bot, LoadConfig, Loggable):
# Initialize and attach config / settings # Initialize and attach config / settings
LoadConfig.__init__(self) LoadConfig.__init__(self)
commands.Bot.__init__(self, command_prefix=self.defaultprefix) commands.Bot.__init__(self, command_prefix=self.defaultprefix)
with open(in_here('config', 'PrivateConfig.json')) as fp:
self.bot_secrets = json.load(fp)
self.db_con = database.DatabaseConnection(**self.bot_secrets['db_con'])
# Load plugins # Load plugins
# Add your cog file name in this list # Add your cog file name in this list
@ -134,11 +138,5 @@ class SebiMachine(commands.Bot, LoadConfig, Loggable):
client = SebiMachine() client = SebiMachine()
# Make sure the key stays private.
# I am 99% certain this is valid!
with open(in_here('config', 'PrivateConfig.json')) as fp:
PrivateConfig = json.load(fp)
if PrivateConfig["bot-key"] == '':
PrivateConfig["bot-key"] = os.getenv('botkey')
client.run(PrivateConfig["bot-key"]) client.run(client.bot_secrets["bot-key"])

View File

@ -0,0 +1,23 @@
import asyncpg
import asyncio
class DatabaseConnection:
def __init__(self, host: str='localhost', port: int=5432, database: str='', user: str='', password: str=''):
if user == '' or password == '' or database == '':
raise RuntimeError('Username or Password are blank')
self.kwargs = {'host': host, 'port': port, 'database': database, 'user': user, 'password': password}
self._conn = None
asyncio.get_event_loop().run_until_complete(self.acquire())
self.fetchval = self._conn.fetchval
self.execute = self._conn.execute
self.fetch = self._conn.fetch
self.fetchrow = self._conn.fetchrow
async def acquire(self):
if not self._conn:
self._conn = await asyncpg.create_pool(**self.kwargs)
async def close(self):
await self._conn.close()
self._conn = None