diff options
author | René 'Necoro' Neumann <necoro@necoro.net> | 2017-02-26 17:30:16 +0100 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.net> | 2017-02-26 17:30:16 +0100 |
commit | b00b51565e4f3aefd6e86c1c9d9c46f70711887b (patch) | |
tree | 8222ef4f9cd6dd0de123ed4d9f1a4b054d465e38 /archivist/model.py | |
parent | 413680326f4c1e6fb0e79bda70ec13533903078d (diff) | |
download | archivist-b00b51565e4f3aefd6e86c1c9d9c46f70711887b.tar.gz archivist-b00b51565e4f3aefd6e86c1c9d9c46f70711887b.tar.bz2 archivist-b00b51565e4f3aefd6e86c1c9d9c46f70711887b.zip |
Introduce the closure
Diffstat (limited to 'archivist/model.py')
-rw-r--r-- | archivist/model.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/archivist/model.py b/archivist/model.py index 79b0514..dd4c87e 100644 --- a/archivist/model.py +++ b/archivist/model.py @@ -1,12 +1,16 @@ from peewee import * from playhouse.fields import CompressedField from playhouse.hybrid import * +from playhouse.sqlite_ext import SqliteExtDatabase import datetime +from pkg_resources import resource_filename from .prefixes import query_pseudo_prefix +from .closure import ClosureTable -db = SqliteDatabase('test.db', pragmas=[('foreign_keys', 'ON')]) +db = SqliteExtDatabase('test.db', pragmas=[('foreign_keys', 'ON')]) +db.load_extension(resource_filename(__name__, 'sqlext/closure')) __tables__ = [] __all__ = ['create_tables', 'drop_tables'] @@ -101,11 +105,14 @@ class DocumentTag(BaseModel): @table class TagImplications(BaseModel): - tag = ForeignKeyField(Tag) - implies_tag = ForeignKeyField(Tag, related_name = 'implications') + tag = ForeignKeyField(Tag, related_name = 'implications') + implies_tag = ForeignKeyField(Tag, related_name = '_implied_by') class Meta: primary_key = CompositeKey('tag', 'implies_tag') def __repr__(self): return "<%s %d --> %d>" % (self.__class__.__name__, self.tag_id, self.implies_tag_id) + +TagClosure = ClosureTable(Tag, TagImplications, TagImplications.implies_tag, TagImplications.tag) +table(TagClosure) |