Add session index interface and database store
This commit is contained in:
parent
a8eb20bc90
commit
9d78dd055d
@ -0,0 +1,31 @@
|
||||
"""Session tx index
|
||||
|
||||
Revision ID: 74e890aec7b0
|
||||
Revises: 7ac591b16c68
|
||||
Create Date: 2021-08-26 10:51:53.651692
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '74e890aec7b0'
|
||||
down_revision = '7ac591b16c68'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.create_table(
|
||||
'session',
|
||||
sa.Column('id', sa.Integer, primary_key=True),
|
||||
sa.Column('otx_id', sa.Integer, sa.ForeignKey('otx.id'), nullable=False),
|
||||
sa.Column('session', sa.String(256), nullable=False),
|
||||
)
|
||||
op.create_index('idx_session', 'session', ['session', 'otx_id'], unique=True)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_index('idx_session')
|
||||
op.drop_table('session')
|
0
chaind/sql/__init__.py
Normal file
0
chaind/sql/__init__.py
Normal file
23
chaind/sql/session.py
Normal file
23
chaind/sql/session.py
Normal file
@ -0,0 +1,23 @@
|
||||
# external imports
|
||||
from chainqueue.sql.query import get_tx
|
||||
|
||||
class SessionIndex:
|
||||
|
||||
def __init__(self, session_id):
|
||||
self.id = session_id
|
||||
|
||||
|
||||
def add(self, chain_spec, tx_hash, session=None):
|
||||
tx = get_tx(chain_spec, tx_hash, session=session)
|
||||
session.execute("INSERT INTO session (otx_id, session) VALUES ({},'{}')".format(tx['otx_id'], self.id))
|
||||
session.flush()
|
||||
|
||||
|
||||
def get(self, chain_spec, adapter, session=None):
|
||||
session = adapter.create_session(session=session)
|
||||
otxs = session.execute("SELECT tx_hash, signed_tx FROM otx WHERE otx.id = ( SELECT otx_id FROM session where session='{}')".format(self.id))
|
||||
txs = {}
|
||||
for otx in otxs:
|
||||
txs[otx[0]] = otx[1]
|
||||
adapter.release_session(session)
|
||||
return txs
|
@ -1,5 +1,5 @@
|
||||
chainlib>=0.0.9a2,<=0.1.0
|
||||
chainqueue>=0.0.4a3,<=0.0.4
|
||||
chainqueue>=0.0.4a4,<=0.0.4
|
||||
chainsyncer>=0.0.6a1,<=0.0.6
|
||||
confini>=0.4.1a1,<0.5.0
|
||||
crypto-dev-signer>=0.4.15a1,<0.5.0
|
||||
|
Loading…
Reference in New Issue
Block a user