fix and improve setup of storage factory and storage

This commit is contained in:
Helmut Merz 2024-03-10 08:04:18 +01:00
parent 73ac0af54e
commit d5a8068261
3 changed files with 15 additions and 11 deletions

View file

@ -2,9 +2,10 @@
"""Compatibility layer on scopes.storage: common functionality.""" """Compatibility layer on scopes.storage: common functionality."""
from sqlalchemy import Table, Column, Index, BigInteger, Text from sqlalchemy import Table, Column, Index, Text
from scopes.storage import common from scopes.storage import common
from scopes.storage.db import postgres
class Storage(common.Storage): class Storage(common.Storage):
@ -31,11 +32,16 @@ class Storage(common.Storage):
return createUidTable(self) return createUidTable(self)
class StorageFactory(postgres.StorageFactory):
storageClass = Storage
def createUidTable(storage): def createUidTable(storage):
metadata = storage.metadata metadata = storage.metadata
cols = [Column('legacy', BigInteger, primary_key=True), cols = [Column('legacy', storage.db.IdType, primary_key=True),
Column('prefix', Text, nullable=False), Column('prefix', Text, nullable=False),
Column('id', BigInteger, nullable=False)] Column('id', storage.db.IdType, nullable=False)]
idxs = [Index('idx_uid_mapping_prefix_id', 'prefix', 'id', unique=True)] idxs = [Index('idx_uid_mapping_prefix_id', 'prefix', 'id', unique=True)]
table = Table('uid_mapping', metadata, *(cols+idxs), extend_existing=True) table = Table('uid_mapping', metadata, *(cols+idxs), extend_existing=True)
metadata.create_all(storage.engine) metadata.create_all(storage.engine)

View file

@ -18,15 +18,15 @@ from loops.organize.tests import setupObjectsForTesting
from loops.storage.compat.common import Storage from loops.storage.compat.common import Storage
from loops import util from loops import util
from scopes.storage.db.postgres import StorageFactory from loops.storage.compat.common import StorageFactory
factory = StorageFactory(config, storageClass=Storage) util.storageFactory = StorageFactory(config)
storage = factory(schema='testing')
class Glob(object): class Glob(object):
pass
storage = util.storageFactory(schema='testing')
class TestCase(unittest.TestCase): class TestCase(unittest.TestCase):
@ -41,7 +41,6 @@ class TestCase(unittest.TestCase):
loopsId = util.getUidForObject(loopsRoot) loopsId = util.getUidForObject(loopsRoot)
setupData = setupObjectsForTesting(site, g.concepts) setupData = setupObjectsForTesting(site, g.concepts)
g.johnC = setupData.johnC g.johnC = setupData.johnC
g.storage = storage
@classmethod @classmethod
def cleanup(cls): def cleanup(cls):

View file

@ -25,11 +25,10 @@ except ImportError:
import cybertools import cybertools
from cybertools.meta.interfaces import IOptions from cybertools.meta.interfaces import IOptions
from loops.browser.util import html_quote from loops.browser.util import html_quote
from loops.storage.compat.common import Storage
import config import config
from scopes.storage.db.postgres import StorageFactory from loops.storage.compat.common import StorageFactory
storageFactory = StorageFactory(config, storageClass=Storage) storageFactory = StorageFactory(config)
_ = MessageFactory('loops') _ = MessageFactory('loops')