1
0
mirror of https://github.com/ilri/dspace-statistics-api.git synced 2025-04-15 19:19:23 +02:00

38 lines
973 B
Python

# SPDX-License-Identifier: GPL-3.0-only
import falcon
import psycopg
from .config import (
DATABASE_HOST,
DATABASE_NAME,
DATABASE_PASS,
DATABASE_PORT,
DATABASE_USER,
)
class DatabaseManager:
"""Manage database connection."""
def __init__(self):
self._connection_uri = f"dbname={DATABASE_NAME} user={DATABASE_USER} password={DATABASE_PASS} host={DATABASE_HOST} port={DATABASE_PORT}"
def __enter__(self):
try:
self._connection = psycopg.connect(
self._connection_uri, row_factory=psycopg.rows.dict_row
)
except psycopg.OperationalError:
title = "500 Internal Server Error"
description = "Could not connect to database"
raise falcon.HTTPInternalServerError(title, description)
return self._connection
def __exit__(self, exc_type, exc_value, exc_traceback):
self._connection.close()
# vim: set sw=4 ts=4 expandtab: