diff --git a/flaskfdx/__init__.py b/flaskfdx/__init__.py new file mode 100644 index 0000000..b53b923 --- /dev/null +++ b/flaskfdx/__init__.py @@ -0,0 +1,34 @@ +import os + +from flask import Flask + +def create_app(test_config=None): + # create and configure app + app = Flask(__name__, instance_relative_config=True) + app.config.from_mapping( + SECRET_KEY='dev', + DATABASE=os.path.join(app.instance_path, 'flaskfdx.sqlite'), + ) + + if test_config is None: + # load the instance config, if it exists, when not testing + app.config.from_pyfile('config.py', silent=True) + else: + # load the test config if passed in + app.config.from_mapping(test_config) + + # ensure the instance folder exists + try: + os.makedirs(app.instance_path) + except OSError: + pass + + # simple hello world page + @app.route('/hello') + def hello(): + return 'Hello World!' + + from . import db + db.init_app(app) + + return app diff --git a/flaskfdx/db.py b/flaskfdx/db.py new file mode 100644 index 0000000..ed72e53 --- /dev/null +++ b/flaskfdx/db.py @@ -0,0 +1,38 @@ +import sqlite3 + +import click +from flask import current_app, g +from flask.cli import with_appcontext + +def get_db(): + if 'db' not in g: + g.db = sqlite3.connect( + current_app.config['DATABASE'], + detect_types=sqlite3.PARSE_DECLTYPES + ) + g.db.row_factory = sqlite3.Row + + return g.db + +def close_db(e=None): + db = g.pop('db', None) + + if db is not None: + db.close() + +def init_db(): + db = get_db() + + with current_app.open_resource('schema.sql') as f: + db.executescript(f.read().decode('utf8')) + +@click.command('init-db') +@with_appcontext +def init_db_command(): + """Create tables if they don't exist.""" + init_db() + click.echo('initialized the database') + +def init_app(app): + app.teardown_appcontext(close_db) + app.cli.add_command(init_db_command) diff --git a/flaskfdx/schema.sql b/flaskfdx/schema.sql new file mode 100644 index 0000000..288429e --- /dev/null +++ b/flaskfdx/schema.sql @@ -0,0 +1,43 @@ +CREATE TABLE IF NOT EXISTS dsw ( + csa INTEGER, + date TEXT NOT NULL, + wa TEXT NOT NULL, + driver TEXT, + totalod TEXT, + nextod TEXT, + delstops INTEGER, + delpkgs INTEGER, + pustops INTEGER, + pupkgs INTEGER, + van INTEGER, + miles INTEGER, + ils TEXT, + dna INTEGER, + allstatus INTEGER, + PRIMARY KEY (date,wa) +); + +CREATE TABLE IF NOT EXISTS totals ( + entity TEXT NOT NULL, + date TEXT NOT NULL, + prepkgs INTEGER, + prestops INTEGER, + prepustops INTEGER, + delstops INTEGER, + delpkgs INTEGER, + pustops INTEGER, + pupkgs INTEGER, + ils TEXT, + dna INTEGER, + allstatus INTEGER, + sig INTEGER, + eve INTEGER, + appt INTEGER, + PRIMARY KEY(entity,date) +); + +CREATE TABLE IF NOT EXISTS users ( + userid INTEGER NOT NULL PRIMARY KEY, + email TEXT UNIQUE NOT NULL, + password TEXT NOT NULL +);