provide (almost) automatic creation of type records in database

This commit is contained in:
Helmut Merz 2024-03-14 20:16:25 +01:00
parent 1e165a711c
commit 1bf5e82afc
2 changed files with 21 additions and 8 deletions

View file

@ -17,6 +17,7 @@ class Concept(Track):
class Concepts(Container):
insertOnChange = False
indexes = None
class Predicate(Concept):
@ -69,3 +70,15 @@ class Types(Concepts):
itemFactory = Type
indexes = [('name',), ('tprefix',)]
tableName = 'types'
def storeType(storage, cls, name):
types = storage.create(Types)
types.save(Type(name, cls.prefix))
storage.commit()
def setupCoreTypes(storage):
for c in registry.values():
cls = c.itemFactory
storeType(storage, cls, cls.__name__.lower())

View file

@ -77,16 +77,16 @@ def test_folder(self, config):
def test_type(self, config):
storage = config.storageFactory(config.dbschema)
storage.dropTable('types')
types = storage.create(concept.Types)
ttype = concept.Type('type', concept.Type.prefix)
ttid = types.save(ttype)
self.assertEqual(ttid, 1)
tps = list(ttype.values())
self.assertEqual(len(tps), 1)
concept.setupCoreTypes(storage)
tfolder = concept.Type('folder', folder.Folder.prefix)
tfid = types.save(tfolder)
types = storage.getContainer(concept.Type.prefix)
tps = list(types.query())
self.assertEqual(len(tps), 5)
self.assertEqual(tps[0].name, 'track')
tfolder = types.queryLast(name='folder')
fldrs = list(tfolder.values())
self.assertEqual(len(fldrs), 2)
self.assertEqual(fldrs[0].name, 'top')
storage.commit()