summaryrefslogtreecommitdiff
path: root/archivist/model.py
diff options
context:
space:
mode:
Diffstat (limited to 'archivist/model.py')
-rw-r--r--archivist/model.py27
1 files changed, 24 insertions, 3 deletions
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):