Produce charts of component availability at JLCPCB from a BOM
Mirrored from https://github.com/gavanfantom/jlc-chart
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
868 B
39 lines
868 B
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 | sqlite3.PARSE_COLNAMES |
|
) |
|
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')) |
|
|
|
def init_app(app): |
|
app.teardown_appcontext(close_db) |
|
app.cli.add_command(init_db_command) |
|
|
|
@click.command('init-db') |
|
@with_appcontext |
|
def init_db_command(): |
|
"""Clear the existing data and create new tables.""" |
|
init_db() |
|
click.echo("Initialised the database.") |
|
|
|
|