1
0
Fork 0
mirror of https://github.com/Findus23/cr-search.git synced 2024-09-19 15:23:44 +02:00
cr-search/models.py

93 lines
2.4 KiB
Python
Raw Normal View History

from datetime import datetime
from peewee import PostgresqlDatabase, Model, IntegerField, CharField, BooleanField, ForeignKeyField, DateTimeField, \
DateField
2020-03-07 10:45:39 +01:00
from playhouse.postgres_ext import TSVectorField
from config import dbauth
db = PostgresqlDatabase(**dbauth)
db.connect()
class BaseModel(Model):
class Meta:
database = db
2020-04-15 18:11:45 +02:00
class Series(BaseModel):
title = CharField(max_length=100)
slug = CharField(max_length=100)
2020-04-15 18:11:45 +02:00
is_campaign = BooleanField()
single_speaker = BooleanField()
def __str__(self):
return f"<Series: {self.title}>"
2020-04-15 18:11:45 +02:00
2020-03-07 10:45:39 +01:00
class Episode(BaseModel):
series = ForeignKeyField(Series, backref="episodes", on_delete="CASCADE")
2020-03-07 10:45:39 +01:00
episode_number = IntegerField()
2020-03-08 14:48:04 +01:00
video_number = IntegerField()
2020-03-07 10:45:39 +01:00
youtube_id = CharField(max_length=11)
2020-04-15 18:11:45 +02:00
title = CharField(max_length=100)
pretty_title = CharField(max_length=100)
2020-04-15 18:11:45 +02:00
downloaded = BooleanField(default=False)
2020-03-08 18:48:14 +01:00
text_imported = BooleanField(default=False)
phrases_imported = BooleanField(default=False)
2020-08-08 15:30:58 +02:00
subtitle_hash = CharField(max_length=64, null=True)
upload_date = DateField()
last_updated = DateTimeField(default=datetime.now)
2020-03-07 10:45:39 +01:00
class Meta:
2020-04-15 18:11:45 +02:00
indexes = ((("series", "video_number"), True),)
2020-03-07 10:45:39 +01:00
@property
def name(self) -> str:
return f"C{self.season}E{self.episode_number:03d}"
def __str__(self):
return f"<Episode: {self.title}>"
2020-03-07 10:45:39 +01:00
class Person(BaseModel):
2020-03-08 18:48:14 +01:00
name = CharField()
2020-03-07 10:45:39 +01:00
color = CharField(null=True)
2020-04-15 18:11:45 +02:00
series = ForeignKeyField(Series)
2020-03-08 18:48:14 +01:00
class Meta:
2020-04-15 18:11:45 +02:00
indexes = ((("name", "series"), True),)
2020-03-07 10:45:39 +01:00
def __str__(self):
return f"<Person: {self.name}>"
2020-03-07 10:45:39 +01:00
class Line(BaseModel):
text = CharField()
search_text = TSVectorField()
person = ForeignKeyField(Person, backref="lines", null=True, on_delete="CASCADE")
2020-03-07 10:45:39 +01:00
isnote = BooleanField(default=False)
ismeta = BooleanField(default=False)
starttime = IntegerField()
endtime = IntegerField()
episode = ForeignKeyField(Episode, backref="lines", on_delete="CASCADE")
2020-03-07 10:45:39 +01:00
order = IntegerField()
class Meta:
indexes = ((("episode", "order"), True),)
def __str__(self):
return f"<Line: {self.pk}>"
2020-03-07 10:45:39 +01:00
class Phrase(BaseModel):
text = CharField()
count = IntegerField()
episode = ForeignKeyField(Episode, backref="phrase", on_delete="CASCADE")
2020-03-07 10:45:39 +01:00
class Meta:
2020-03-08 14:48:04 +01:00
indexes = ((("text", "episode"), True),)
def __str__(self):
return f"<Line: {self.text} ({self.pk})>"