From 7f0936b3e4c40ec8b64ca073176ef8dd2fbeb559 Mon Sep 17 00:00:00 2001 From: nolash Date: Sat, 10 Apr 2021 00:30:08 +0200 Subject: [PATCH] Split up backend modules --- .../{backend_file.py => backend/file.py} | 0 chainsyncer/backend/memory.py | 51 +++++++++++++++++ chainsyncer/{backend.py => backend/sql.py} | 55 ++----------------- setup.cfg | 2 +- tests/test_basic.py | 4 +- tests/test_database.py | 3 +- tests/test_file.py | 2 +- 7 files changed, 62 insertions(+), 55 deletions(-) rename chainsyncer/{backend_file.py => backend/file.py} (100%) create mode 100644 chainsyncer/backend/memory.py rename chainsyncer/{backend.py => backend/sql.py} (90%) diff --git a/chainsyncer/backend_file.py b/chainsyncer/backend/file.py similarity index 100% rename from chainsyncer/backend_file.py rename to chainsyncer/backend/file.py diff --git a/chainsyncer/backend/memory.py b/chainsyncer/backend/memory.py new file mode 100644 index 0000000..14f7fdf --- /dev/null +++ b/chainsyncer/backend/memory.py @@ -0,0 +1,51 @@ +# standard imports +import logging + +logg = logging.getLogger().getChild(__name__) + + +class MemBackend: + + def __init__(self, chain_spec, object_id, target_block=None): + self.object_id = object_id + self.chain_spec = chain_spec + self.block_height = 0 + self.tx_height = 0 + self.flags = 0 + self.target_block = target_block + self.db_session = None + + + def connect(self): + pass + + + def disconnect(self): + pass + + + def set(self, block_height, tx_height): + logg.debug('stateless backend received {} {}'.format(block_height, tx_height)) + self.block_height = block_height + self.tx_height = tx_height + + + def get(self): + return ((self.block_height, self.tx_height), self.flags) + + + def target(self): + return (self.target_block, self.flags) + + + def register_filter(self, name): + pass + + + def complete_filter(self, n): + pass + + + def __str__(self): + return "syncer membackend chain {} cursor".format(self.get()) + diff --git a/chainsyncer/backend.py b/chainsyncer/backend/sql.py similarity index 90% rename from chainsyncer/backend.py rename to chainsyncer/backend/sql.py index 3323074..d6e5180 100644 --- a/chainsyncer/backend.py +++ b/chainsyncer/backend/sql.py @@ -10,7 +10,7 @@ from chainsyncer.db.models.sync import BlockchainSync from chainsyncer.db.models.filter import BlockchainSyncFilter from chainsyncer.db.models.base import SessionBase -logg = logging.getLogger(__name__) +logg = logging.getLogger().getChild(__name__) class SyncerBackend: @@ -287,57 +287,12 @@ class SyncerBackend: def complete_filter(self, n): + self.connect() self.db_object_filter.set(n) - + self.db_session.add(self.db_object_filter) + self.db_session.commit() + self.disconnect() def __str__(self): return "syncerbackend chain {} start {} target {}".format(self.chain(), self.start(), self.target()) - - - -class MemBackend: - - def __init__(self, chain_spec, object_id, target_block=None): - self.object_id = object_id - self.chain_spec = chain_spec - self.block_height = 0 - self.tx_height = 0 - self.flags = 0 - self.target_block = target_block - self.db_session = None - - - def connect(self): - pass - - - def disconnect(self): - pass - - - def set(self, block_height, tx_height): - logg.debug('stateless backend received {} {}'.format(block_height, tx_height)) - self.block_height = block_height - self.tx_height = tx_height - - - def get(self): - return ((self.block_height, self.tx_height), self.flags) - - - def target(self): - return (self.target_block, self.flags) - - - def register_filter(self, name): - pass - - - def complete_filter(self, n): - pass - - - def __str__(self): - return "syncer membackend chain {} cursor".format(self.get()) - diff --git a/setup.cfg b/setup.cfg index ce10e5d..579d400 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = chainsyncer -version = 0.0.1a22 +version = 0.0.2a1 description = Generic blockchain syncer driver author = Louis Holbrook author_email = dev@holbrook.no diff --git a/tests/test_basic.py b/tests/test_basic.py index 6138cbe..cc9e2b9 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -5,7 +5,7 @@ import unittest from chainlib.chain import ChainSpec # local imports -from chainsyncer.backend import SyncerBackend +from chainsyncer.backend.memory import MemBackend # testutil imports from tests.base import TestBase @@ -15,7 +15,7 @@ class TestBasic(TestBase): def test_hello(self): chain_spec = ChainSpec('evm', 'bloxberg', 8996, 'foo') - backend = SyncerBackend(chain_spec, 'foo') + backend = MemBackend(chain_spec, 'foo') if __name__ == '__main__': diff --git a/tests/test_database.py b/tests/test_database.py index f568407..314ee6c 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -8,7 +8,7 @@ from chainlib.chain import ChainSpec # local imports from chainsyncer.db.models.base import SessionBase from chainsyncer.db.models.filter import BlockchainSyncFilter -from chainsyncer.backend import SyncerBackend +from chainsyncer.backend.sql import SyncerBackend # testutil imports from tests.base import TestBase @@ -67,6 +67,7 @@ class TestDatabase(TestBase): session.close() + def test_backend_retrieve(self): s = SyncerBackend.live(self.chain_spec, 42) s.register_filter('foo') diff --git a/tests/test_file.py b/tests/test_file.py index 597ce34..4a22710 100644 --- a/tests/test_file.py +++ b/tests/test_file.py @@ -9,7 +9,7 @@ import shutil from chainlib.chain import ChainSpec # local imports -from chainsyncer.backend_file import SyncerFileBackend +from chainsyncer.backend.file import SyncerFileBackend logging.basicConfig(level=logging.DEBUG) logg = logging.getLogger().getChild(__name__)