Skip to content
Snippets Groups Projects
Commit 929230f4 authored by William Bell's avatar William Bell
Browse files

Adding updated database configuration functions

parent 85a01a0f
No related branches found
No related tags found
No related merge requests found
......@@ -4,28 +4,61 @@ from flask import Flask
from models import db
def database_uri() -> str:
def database_uri() -> sqlalchemy.engine.url.URL:
"""
A function to build the database connection string, using environment
variable settings.
"""
# If the connection string has been given, use it.
url = os.environ.get("DB_CONNECTION_STRING", default="")
if len(url) != 0:
return url
# Create a new DB connection string from components.
url = sqlalchemy.engine.url.URL.create(
drivername = "mariadb+mariadbconnector",
drivername = os.environ.get("DB_DRIVER", default="mariadb+mariadbconnector"),
username = os.environ.get("DB_USER", default="none"),
password = os.environ.get("DB_PASSWORD", default="none"),
host = os.environ.get("DB_SERVER", default="127.0.0.1"),
port = os.environ.get("DB_PORT", default="3306"),
database = os.environ.get("DB_NAME", default="mydb"))
return str(url)
return url
def database_connection_args() -> dict:
"""
A function to build the connection arguments, which are associated
with an SSL connection.
"""
connection_args = {}
# Check for a SSL certificate.
ssl_cert_file = os.environ.get("DB_SSL_CERT", default=None)
if ssl_cert_file is not None:
connection_args.update({
"ssl_ca": ssl_cert_file
})
# Check if SSL should be enabled.
ssl_str = os.environ.get("DB_SSL", default=None)
if ssl_str is not None:
if ssl_str.strip().lower() == "true":
connection_args.update({
"ssl": "1"
})
return connection_args
def create_app(test_config:dict = {}):
"""
A factory function to create a Flask app.
"""
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = database_uri()
connection_args = {}
ssl_cert = os.environ.get("DB_SSL_CERT", default=None)
if ssl_cert is not None:
connection_args["ssl_ca"] = ssl_cert
connection_args = database_connection_args()
if len(connection_args) > 0:
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {"connect_args": connection_args}
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
......@@ -40,6 +73,9 @@ def create_app(test_config:dict = {}):
if __name__ == '__main__':
"""
A test program to create one running Flask app.
"""
app = create_app()
svc_host = os.environ.get("SVC_HOST", default=None)
app.run(debug=True, host=svc_host)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment