Ejemplo n.º 1
0
Archivo: cli.py Proyecto: dpays/dpds
def raw_sql(ctx, sql):
    """Execute raw sql query"""
    engine = ctx.obj['engine']
    database_url = ctx.obj['database_url']
    metadata = ctx.obj['metadata']
    from sqlalchemy.sql import text
    # init tables first
    init_tables(database_url, metadata)
    stmt = text(sql)
    with engine.connect() as conn:
        results = conn.execute(stmt).fetchall()
    click.echo(json.dumps(results))
Ejemplo n.º 2
0
Archivo: cli.py Proyecto: dpays/dpds
def last_block(ctx):
    """Return the highest block stored in the database"""
    engine = ctx.obj['engine']
    database_url = ctx.obj['database_url']
    metadata = ctx.obj['metadata']

    # init tables first
    init_tables(database_url, metadata)

    # configure session
    Session.configure(bind=engine)
    session = Session()

    click.echo(Block.highest_block(session))
Ejemplo n.º 3
0
Archivo: cli.py Proyecto: dpays/dpds
def insert_blocks(ctx, blocks):
    """Insert blocks into the database"""
    engine = ctx.obj['engine']
    database_url = ctx.obj['database_url']
    metadata = ctx.obj['metadata']

    # init tables first
    init_tables(database_url, metadata)

    # configure session
    Session.configure(bind=engine)
    session = Session()

    add_blocks(blocks,
               session,
               insert=True,
               merge_insert=False,
               insert_many=False)
Ejemplo n.º 4
0
Archivo: cli.py Proyecto: dpays/dpds
def find_missing_blocks(ctx, url):
    """Return JSON array of block_nums from missing blocks"""

    engine = ctx.obj['engine']
    database_url = ctx.obj['database_url']
    metadata = ctx.obj['metadata']
    rpc = SimpleDPayAPIClient(url)

    # init tables first
    init_tables(database_url, metadata)

    # configure session
    Session.configure(bind=engine)
    session = Session()

    last_chain_block = rpc.last_irreversible_block_num()

    click.echo(
        json.dumps(
            Block.find_missing(session, last_chain_block=last_chain_block)))
Ejemplo n.º 5
0
Archivo: cli.py Proyecto: dpays/dpds
def bulk_add_blocks(ctx, blocks, chunksize):
    """Insert many blocks in the database"""
    engine = ctx.obj['engine']
    database_url = ctx.obj['database_url']
    metadata = ctx.obj['metadata']

    # init tables first
    init_tables(database_url, metadata)

    # configure session
    Session.configure(bind=engine)
    session = Session()
    click.echo("SQL: 'SET SESSION innodb_lock_wait_timeout=150'", err=True)
    session.execute('SET SESSION innodb_lock_wait_timeout=150')

    try:
        for chunk in chunkify(blocks, chunksize):
            bulk_add(chunk, session)
    except Exception as e:
        raise e
    finally:
        session.close_all()
Ejemplo n.º 6
0
def task_init_db_if_required(database_url):

    init_tables(database_url, Base.metadata)
Ejemplo n.º 7
0
Archivo: cli.py Proyecto: dpays/dpds
def init_db_tables(ctx):
    """Create any missing tables on the database"""
    database_url = ctx.obj['database_url']
    metadata = ctx.obj['metadata']

    init_tables(database_url, metadata)