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
|
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
|
chainsyncer>=0.0.6a1,<=0.0.6
|
||||||
confini>=0.4.1a1,<0.5.0
|
confini>=0.4.1a1,<0.5.0
|
||||||
crypto-dev-signer>=0.4.15a1,<0.5.0
|
crypto-dev-signer>=0.4.15a1,<0.5.0
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = chaind
|
name = chaind
|
||||||
version = 0.0.2a3
|
version = 0.0.2a4
|
||||||
description = Base package for chain queue services
|
description = Base package for chain queue services
|
||||||
author = Louis Holbrook
|
author = Louis Holbrook
|
||||||
author_email = dev@holbrook.no
|
author_email = dev@holbrook.no
|
||||||
|
Loading…
Reference in New Issue
Block a user