Replace database methods with peewee ORM #39
6 changed files with 52 additions and 31 deletions
3
setup.py
3
setup.py
|
@ -14,6 +14,8 @@ setup(
|
||||||
data_files=[('config', ['config/conf.json',])],
|
data_files=[('config', ['config/conf.json',])],
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
install_requires=[
|
install_requires=[
|
||||||
|
'mysql-connector-python',
|
||||||
|
'pyyaml',
|
||||||
'Faker>=1.0.7',
|
'Faker>=1.0.7',
|
||||||
'asyncio>=3.4.3',
|
'asyncio>=3.4.3',
|
||||||
'aiohttp==3.5.4',
|
'aiohttp==3.5.4',
|
||||||
|
@ -24,5 +26,6 @@ setup(
|
||||||
'PyNaCl>=1.3.0',
|
'PyNaCl>=1.3.0',
|
||||||
'requests',
|
'requests',
|
||||||
'cython',
|
'cython',
|
||||||
|
'peewee'
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
7
src/definitions.py
Normal file
7
src/definitions.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
SRC_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
ROOT_DIR = os.path.dirname(SRC_DIR)
|
||||||
|
CONFIG_FILE = os.path.join(ROOT_DIR, 'config', 'conf.json')
|
||||||
|
LOGGING_DIR = os.path.join(ROOT_DIR, 'logs')
|
||||||
|
DATABASE_DIR = os.path.join(ROOT_DIR, 'database')
|
42
src/main.py
42
src/main.py
|
@ -1,13 +1,20 @@
|
||||||
import argparse
|
import argparse
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
import logging
|
import logging
|
||||||
import logging.config
|
import logging.config
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from src.server.app import run_app
|
from src.server.app import run_app
|
||||||
from src.settings import config
|
from src.definitions import LOGGING_DIR, CONFIG_FILE, DATABASE_DIR
|
||||||
|
|
||||||
|
|
||||||
def config_logging_from_settings(conf):
|
def setup_logging_from_config(conf: dict):
|
||||||
|
# set the logging directory here from the settings file
|
||||||
|
if not os.path.exists(LOGGING_DIR):
|
||||||
|
os.mkdir(LOGGING_DIR)
|
||||||
|
|
||||||
_config = {
|
_config = {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"disable_existing_loggers": False,
|
"disable_existing_loggers": False,
|
||||||
|
@ -32,7 +39,7 @@ def config_logging_from_settings(conf):
|
||||||
"level": "DEBUG",
|
"level": "DEBUG",
|
||||||
"formatter": "standard",
|
"formatter": "standard",
|
||||||
"class": "logging.handlers.RotatingFileHandler",
|
"class": "logging.handlers.RotatingFileHandler",
|
||||||
"filename": conf['path']['debug_log'],
|
"filename": os.path.join(LOGGING_DIR, 'debug.log'),
|
||||||
"maxBytes": 10485760,
|
"maxBytes": 10485760,
|
||||||
"backupCount": 5
|
"backupCount": 5
|
||||||
},
|
},
|
||||||
|
@ -40,7 +47,7 @@ def config_logging_from_settings(conf):
|
||||||
"level": "ERROR",
|
"level": "ERROR",
|
||||||
"formatter": "standard",
|
"formatter": "standard",
|
||||||
"class": "logging.handlers.RotatingFileHandler",
|
"class": "logging.handlers.RotatingFileHandler",
|
||||||
"filename": conf['path']['error_log'],
|
"filename": os.path.join(LOGGING_DIR, 'error.log'),
|
||||||
"maxBytes": 10485760,
|
"maxBytes": 10485760,
|
||||||
"backupCount": 5
|
"backupCount": 5
|
||||||
},
|
},
|
||||||
|
@ -48,7 +55,7 @@ def config_logging_from_settings(conf):
|
||||||
"level": "NOTSET",
|
"level": "NOTSET",
|
||||||
"formatter": "aiohttp",
|
"formatter": "aiohttp",
|
||||||
"class": "logging.handlers.RotatingFileHandler",
|
"class": "logging.handlers.RotatingFileHandler",
|
||||||
"filename": conf['path']['server_log'],
|
"filename": os.path.join(LOGGING_DIR, 'server.log'),
|
||||||
"maxBytes": 10485760,
|
"maxBytes": 10485760,
|
||||||
"backupCount": 5
|
"backupCount": 5
|
||||||
}
|
}
|
||||||
|
@ -70,15 +77,36 @@ def config_logging_from_settings(conf):
|
||||||
logging.config.dictConfig(_config)
|
logging.config.dictConfig(_config)
|
||||||
|
|
||||||
|
|
||||||
|
def get_config(filepath):
|
||||||
|
with open(filepath, 'r') as cfile:
|
||||||
|
config = yaml.load(cfile, Loader=yaml.FullLoader)
|
||||||
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
def setup_db_from_config(config: dict):
|
||||||
|
if 'sqlite' in config['database']:
|
||||||
|
if not os.path.exists(DATABASE_DIR):
|
||||||
|
os.mkdir(DATABASE_DIR)
|
||||||
|
|
||||||
|
config['db_path'] = os.path.join(
|
||||||
|
DATABASE_DIR, config['database']['sqlite']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def main(argv=None):
|
def main(argv=None):
|
||||||
argv = argv or sys.argv[1:]
|
argv = argv or sys.argv[1:]
|
||||||
parser = argparse.ArgumentParser(description='LBRY Comment Server')
|
parser = argparse.ArgumentParser(description='LBRY Comment Server')
|
||||||
parser.add_argument('--port', type=int)
|
parser.add_argument('--port', type=int)
|
||||||
|
parser.add_argument('--config', type=str)
|
||||||
args = parser.parse_args(argv)
|
args = parser.parse_args(argv)
|
||||||
config_logging_from_settings(config)
|
|
||||||
|
config = get_config(CONFIG_FILE) if not args.config else args.config
|
||||||
|
setup_logging_from_config(config)
|
||||||
|
setup_db_from_config(config)
|
||||||
|
|
||||||
if args.port:
|
if args.port:
|
||||||
config['port'] = args.port
|
config['port'] = args.port
|
||||||
config_logging_from_settings(config)
|
|
||||||
run_app(config)
|
run_app(config)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -75,12 +75,9 @@ class CommentDaemon:
|
||||||
self.config = app['config']
|
self.config = app['config']
|
||||||
|
|
||||||
# configure the db file
|
# configure the db file
|
||||||
if db_file:
|
app['db_path'] = db_file or config.get('db_path')
|
||||||
app['db_path'] = db_file
|
if app['db_path']:
|
||||||
app['backup'] = backup
|
app['backup'] = backup or '.'.join((app['db_path'], 'backup'))
|
||||||
else:
|
|
||||||
app['db_path'] = config['path']['database']
|
|
||||||
app['backup'] = backup or (app['db_path'] + '.backup')
|
|
||||||
|
|
||||||
# configure the order of tasks to run during app lifetime
|
# configure the order of tasks to run during app lifetime
|
||||||
app.on_startup.append(setup_db_schema)
|
app.on_startup.append(setup_db_schema)
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
# cython: language_level=3
|
|
||||||
import json
|
|
||||||
import pathlib
|
|
||||||
|
|
||||||
root_dir = pathlib.Path(__file__).parent.parent
|
|
||||||
config_path = root_dir / 'config' / 'conf.json'
|
|
||||||
|
|
||||||
|
|
||||||
def get_config(filepath):
|
|
||||||
with open(filepath, 'r') as cfile:
|
|
||||||
conf = json.load(cfile)
|
|
||||||
for key, path in conf['path'].items():
|
|
||||||
conf['path'][key] = str(root_dir / path)
|
|
||||||
return conf
|
|
||||||
|
|
||||||
|
|
||||||
config = get_config(config_path)
|
|
|
@ -9,13 +9,16 @@ from faker.providers import internet
|
||||||
from faker.providers import lorem
|
from faker.providers import lorem
|
||||||
from faker.providers import misc
|
from faker.providers import misc
|
||||||
|
|
||||||
from src.settings import config
|
from src.main import get_config, CONFIG_FILE
|
||||||
from src.server import app
|
from src.server import app
|
||||||
from src.server.validation import is_valid_base_comment
|
from src.server.validation import is_valid_base_comment
|
||||||
|
|
||||||
from test.testcase import AsyncioTestCase
|
from test.testcase import AsyncioTestCase
|
||||||
|
|
||||||
|
|
||||||
|
config = get_config(CONFIG_FILE)
|
||||||
|
|
||||||
|
|
||||||
if 'slack_webhook' in config:
|
if 'slack_webhook' in config:
|
||||||
config.pop('slack_webhook')
|
config.pop('slack_webhook')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue