initial creation
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import click
|
||||
|
||||
from sqlalchemy_utils import database_exists, create_database
|
||||
|
||||
from snakeeyes.app import create_app
|
||||
from snakeeyes.extensions import db
|
||||
from snakeeyes.blueprints.user.models import User
|
||||
|
||||
# Create an app context for the database connection.
|
||||
app = create_app()
|
||||
db.app = app
|
||||
|
||||
|
||||
@click.group()
|
||||
def cli():
|
||||
""" Run PostgreSQL related tasks. """
|
||||
pass
|
||||
|
||||
|
||||
@click.command()
|
||||
@click.option('--with-testdb/--no-with-testdb', default=False,
|
||||
help='Create a test db too?')
|
||||
def init(with_testdb):
|
||||
"""
|
||||
Initialize the database.
|
||||
|
||||
:param with_testdb: Create a test database
|
||||
:return: None
|
||||
"""
|
||||
db.drop_all()
|
||||
db.create_all()
|
||||
|
||||
if with_testdb:
|
||||
db_uri = '{0}_test'.format(app.config['SQLALCHEMY_DATABASE_URI'])
|
||||
|
||||
if not database_exists(db_uri):
|
||||
create_database(db_uri)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
@click.command()
|
||||
def seed():
|
||||
"""
|
||||
Seed the database with an initial user.
|
||||
|
||||
:return: User instance
|
||||
"""
|
||||
if User.find_by_identity(app.config['SEED_ADMIN_EMAIL']) is not None:
|
||||
return None
|
||||
|
||||
params = {
|
||||
'role': 'admin',
|
||||
'email': app.config['SEED_ADMIN_EMAIL'],
|
||||
'password': app.config['SEED_ADMIN_PASSWORD']
|
||||
}
|
||||
|
||||
return User(**params).save()
|
||||
|
||||
|
||||
@click.command()
|
||||
@click.option('--with-testdb/--no-with-testdb', default=False,
|
||||
help='Create a test db too?')
|
||||
@click.pass_context
|
||||
def reset(ctx, with_testdb):
|
||||
"""
|
||||
Init and seed automatically.
|
||||
|
||||
:param with_testdb: Create a test database
|
||||
:return: None
|
||||
"""
|
||||
ctx.invoke(init, with_testdb=with_testdb)
|
||||
ctx.invoke(seed)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
cli.add_command(init)
|
||||
cli.add_command(seed)
|
||||
cli.add_command(reset)
|
||||
Reference in New Issue
Block a user