Test d’un service utilisant une base de données.
This commit is contained in:
@ -10,9 +10,8 @@ from .config import DEBUG
|
||||
from .config import get_config
|
||||
from .context import Context
|
||||
from . import register
|
||||
import asyncpg
|
||||
|
||||
def connect(db_conf):
|
||||
return psycopg2.connect(**db_conf)
|
||||
|
||||
class CallDispatcher:
|
||||
def valid_public_function(self,
|
||||
@ -38,6 +37,7 @@ class CallDispatcher:
|
||||
raise CallError(str(err))
|
||||
else:
|
||||
if not isinstance(returns, dict):
|
||||
log.error_msg(risotto_context, kwargs, returns)
|
||||
err = _(f'function {module_name}.{function_name} has to return a dict')
|
||||
log.error_msg(risotto_context, kwargs, err)
|
||||
raise CallError(str(err))
|
||||
@ -97,10 +97,15 @@ class CallDispatcher:
|
||||
risotto_context.function = obj['function']
|
||||
if obj['risotto_context']:
|
||||
kw['risotto_context'] = risotto_context
|
||||
if obj['database']:
|
||||
db_conf = get_config.get('database')
|
||||
risotto_context.db_cursor = await connect(db_conf).cursor()
|
||||
returns = await risotto_context.function(self.injected_self[obj['module']], **kw)
|
||||
if 'database' in obj and obj['database']:
|
||||
db_conf = get_config().get('database')
|
||||
pool = await asyncpg.create_pool(database=db_conf.get('dbname'), user=db_conf.get('user'))
|
||||
async with pool.acquire() as connection:
|
||||
risotto_context.connection = connection
|
||||
async with connection.transaction():
|
||||
returns = await risotto_context.function(self.injected_self[obj['module']], **kw)
|
||||
else:
|
||||
returns = await risotto_context.function(self.injected_self[obj['module']], **kw)
|
||||
except CallError as err:
|
||||
raise err
|
||||
except Exception as err:
|
||||
|
Reference in New Issue
Block a user