Hide keyboard shortcuts

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 

3 

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 ) 

10 

11 

12class ContentType(enum.Enum): 

13 APPLICATION = "application" 

14 BOOK = "book" 

15 GAME = "game" 

16 MOVIE = "movie" 

17 SERIE = "serie" 

18 TRACK = "track" 

19 

20 def __str__(self): 

21 return self.value 

22 

23 

24class SimilarsContentModel(db.Model): 

25 """ 

26 SimilarsContent Model for storing similars content 

27 """ 

28 __tablename__ = "similars_content" 

29 

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)) 

37 

38 

39class ContentModel(db.Model): 

40 """ 

41 Content Model for storing content related details 

42 """ 

43 __tablename__ = "content" 

44 

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) 

50 

51 genres = db.relationship( 

52 "GenreModel", secondary=ContentGenresModel, lazy="subquery") 

53 

54 similars = db.relationship("ContentModel", secondary=SimilarsContentModel.__table__, 

55 primaryjoin=content_id == SimilarsContentModel.content_id0, 

56 secondaryjoin=content_id == SimilarsContentModel.content_id1, lazy="subquery")