From d3c667a654a27e8023c341fc3ec0e452599f0318 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Sat, 25 Feb 2017 23:24:30 +0100 Subject: More prefix work --- archivist/model.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'archivist/model.py') diff --git a/archivist/model.py b/archivist/model.py index b281edc..b8a1604 100644 --- a/archivist/model.py +++ b/archivist/model.py @@ -1,7 +1,10 @@ from peewee import * from playhouse.fields import CompressedField +from playhouse.hybrid import * import datetime + +from .prefixes import query_pseudo_prefix db = SqliteDatabase('test.db', pragmas=[('foreign_keys', 'ON')]) @@ -26,21 +29,39 @@ class BaseModel(Model): @table class Document(BaseModel): content = CompressedField() - created = DateTimeField(default=datetime.datetime.now) + created = DateField(default=datetime.datetime.now) description = CharField(null=True) direction = BooleanField(null=True) original_path = CharField(null=True) + inserted = DateTimeField(default=datetime.datetime.now) + + @classmethod + def matches(cls, prefix, value): + return query_pseudo_prefix(prefix, value) or Document.id << ( + DocumentTag.select(DocumentTag.document) + .join(Tag, on=Tag.matches(prefix, value))) @table class Prefix(BaseModel): - name = CharField(null=True, unique=True) + name = CharField(primary_key = True) builtin = BooleanField(default = False) pseudo = BooleanField(default = False) + description = CharField(null=True) @table class Tag(BaseModel): name = CharField() - prefix = ForeignKeyField(Prefix, null=True, related_name = 'tag') + prefix = ForeignKeyField(Prefix, null=True, related_name = 'tag', db_column = 'prefix') + description = CharField(null=True) + + @hybrid_method + def matches(self, prefix, name): + return (self.prefix == prefix) & (self.name == name) + + class Meta: + indexes = [ + (('name', 'prefix'), True) + ] @table class DocumentTag(BaseModel): -- cgit v1.2.3-70-g09d2