You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
Python
88 lines
2.2 KiB
Python
from decimal import Decimal
|
|
|
|
import click
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from werkzeug.serving import run_simple
|
|
from .app import app, settings
|
|
from .model import Base, UserModel, GeographyModel, StoreModel, AlertModel
|
|
|
|
engine = create_engine(settings.get("database_engine_dsn"))
|
|
|
|
Session = sessionmaker(bind=engine)
|
|
|
|
|
|
@click.group()
|
|
def cli():
|
|
pass
|
|
|
|
|
|
@click.command()
|
|
def serve(host="0.0.0.0", port=8080, debug=True, use_reloader=True):
|
|
run_simple(host, port, app, use_debugger=debug, use_reloader=use_reloader)
|
|
|
|
|
|
@click.command()
|
|
def initdb():
|
|
click.echo("Creating database")
|
|
Base.metadata.create_all(bind=engine)
|
|
click.echo("Database created")
|
|
|
|
|
|
@click.command()
|
|
def dropdb():
|
|
click.echo("Are you sure you would like to drop the database?: [Y/N]")
|
|
response = input()
|
|
if response.lower() == "y":
|
|
Base.metadata.drop_all(bind=engine)
|
|
click.echo("Database dropped")
|
|
else:
|
|
click.echo("Database drop aborted")
|
|
|
|
|
|
@click.command()
|
|
@click.argument("email", type=str)
|
|
@click.argument("passwd", type=str)
|
|
def adduser(email, passwd):
|
|
user = UserModel(email=email, password=passwd, admin=False)
|
|
session = Session()
|
|
session.add(user)
|
|
session.commit()
|
|
click.echo(f"New user {user.email} has been created")
|
|
session.close()
|
|
|
|
|
|
@click.command()
|
|
def testdata():
|
|
session = Session()
|
|
user = UserModel(email="test@kellogg.com", password="Welcome1")
|
|
geography = GeographyModel(id=500_000, name="TEST", user=user)
|
|
store = StoreModel(
|
|
id=9_000_000_000,
|
|
name="SUPER TEST STORE 4000",
|
|
number="4000",
|
|
address="123 FAKE STREET",
|
|
city="PORTAGE",
|
|
zip="49024",
|
|
state="MI",
|
|
lat=Decimal("42.2607409"),
|
|
long=Decimal("-85.6121787"),
|
|
tdlinx="0123456",
|
|
geography=geography,
|
|
)
|
|
alert = AlertModel(store=store, promo_name="BATMAN CHEEZIT")
|
|
session.add_all([user, geography, store, alert])
|
|
session.commit()
|
|
click.echo("Test Data created")
|
|
session.close()
|
|
|
|
|
|
cli.add_command(serve)
|
|
cli.add_command(initdb)
|
|
cli.add_command(dropdb)
|
|
cli.add_command(adduser)
|
|
cli.add_command(testdata)
|
|
|
|
if __name__ == "__main__":
|
|
cli()
|