Coverage for src/model/content_model.py : 96%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from src import db
2import enum
4ContentGenresModel = db.Table("content_genres",
5 db.Column("content_id", db.Integer, db.ForeignKey(
6 "content.content_id"), primary_key=True),
7 db.Column("genre_id", db.Integer, db.ForeignKey(
8 "genre.genre_id"), primary_key=True)
9 )
12class ContentType(enum.Enum):
13 APPLICATION = "application"
14 BOOK = "book"
15 GAME = "game"
16 MOVIE = "movie"
17 SERIE = "serie"
18 TRACK = "track"
20 def __str__(self):
21 return self.value
24class SimilarsContentModel(db.Model):
25 """
26 SimilarsContent Model for storing similars content
27 """
28 __tablename__ = "similars_content"
30 content_id0 = db.Column(db.Integer, db.ForeignKey(
31 "content.content_id"), primary_key=True)
32 content_id1 = db.Column(db.Integer, db.ForeignKey(
33 "content.content_id"), primary_key=True)
34 similarity = db.Column(db.Float)
35 content_type0 = db.Column(db.Enum(ContentType))
36 content_type1 = db.Column(db.Enum(ContentType))
39class ContentModel(db.Model):
40 """
41 Content Model for storing content related details
42 """
43 __tablename__ = "content"
45 content_id = db.Column(db.Integer, primary_key=True,
46 autoincrement=True, index=True)
47 rating = db.Column(db.Float)
48 rating_count = db.Column(db.Integer, default=0)
49 popularity_score = db.Column(db.Float, default=0)
51 genres = db.relationship(
52 "GenreModel", secondary=ContentGenresModel, lazy="subquery")
54 similars = db.relationship("ContentModel", secondary=SimilarsContentModel.__table__,
55 primaryjoin=content_id == SimilarsContentModel.content_id0,
56 secondaryjoin=content_id == SimilarsContentModel.content_id1, lazy="subquery")