work in progress: topics (as example for concepts)

This commit is contained in:
Helmut Merz 2024-03-15 21:16:45 +01:00
parent 20520a70c5
commit 606284791d
4 changed files with 107 additions and 66 deletions

View file

@ -52,6 +52,13 @@ class Predicates(Concepts):
tableName = 'preds' tableName = 'preds'
defaultPredicate = 'standard'
def storePredicate(storage, name):
preds = storage.getContainer('pred')
preds.save(Predicate(name))
class Triple(Track): class Triple(Track):
headFields = ['first', 'second', 'predicate'] headFields = ['first', 'second', 'predicate']
@ -76,8 +83,6 @@ class Rels(Container):
tableName = 'rels' tableName = 'rels'
insertOnChange = False insertOnChange = False
defaultPredicate = 'standard'
# types stuff # types stuff

18
scopes/storage/topic.py Normal file
View file

@ -0,0 +1,18 @@
# scopes.storage.topic
from scopes.storage.common import registerContainerClass
from scopes.storage import concept
class Topic(concept.Concept):
prefix = 'tpc'
@registerContainerClass
class Topics(concept.Concepts):
itemFactory = Topic
tableName = 'topics'

View file

@ -24,6 +24,9 @@ class Test(unittest.TestCase):
def test_003_type(self): def test_003_type(self):
tlib_storage.test_type(self, config) tlib_storage.test_type(self, config)
def test_004_topic(self):
tlib_storage.test_topic(self, config)
def test_013_server(self): def test_013_server(self):
tlib_server.test_app(self, config) tlib_server.test_app(self, config)

View file

@ -3,7 +3,7 @@
"""Test implementation for the `scopes.storage` package.""" """Test implementation for the `scopes.storage` package."""
from datetime import datetime from datetime import datetime
from scopes.storage import concept, folder, tracking from scopes.storage import concept, folder, topic, tracking
def test_tracking(self, config): def test_tracking(self, config):
@ -81,7 +81,7 @@ def test_type(self, config):
types = storage.getContainer(concept.Type.prefix) types = storage.getContainer(concept.Type.prefix)
tps = list(types.query()) tps = list(types.query())
self.assertEqual(len(tps), 5) self.assertEqual(len(tps), 6)
self.assertEqual(tps[0].name, 'track') self.assertEqual(tps[0].name, 'track')
tfolder = types.queryLast(name='folder') tfolder = types.queryLast(name='folder')
@ -90,3 +90,18 @@ def test_type(self, config):
self.assertEqual(fldrs[0].name, 'top') self.assertEqual(fldrs[0].name, 'top')
storage.commit() storage.commit()
def test_topic(self, config):
storage = config.storageFactory(config.dbschema)
storage.dropTable('topics')
topics = storage.getContainer(topic.Topic.prefix)
concept.storePredicate(storage, concept.defaultPredicate)
root = folder.Root(storage)
root['top']['topics'] = folder.Folder()
tp_itc = topic.Topic('itc')
topics.save(tp_itc)
storage.commit()