Coverage for src/schemas/recommendation_history_schema.py : 100%
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
1# Application Schemas
2from marshmallow import fields
3from src import ma
4from src.model import RecommendationLaunchedForProfileEvent, RecoLaunchedLikedGenreModel, RecoMetaModel, RecoResultModel
5from src.utils import SQLAlchemyAutoSchema
8class RecoLaunchedLikedGenreItem(SQLAlchemyAutoSchema):
9 content_type = fields.Function(lambda obj: obj.content_type.value)
11 class Meta:
12 model = RecoLaunchedLikedGenreModel
13 include_fk = True
14 fields = ("name", "content_type")
16# ---------------------------
19class RecoMetaMeta:
20 model = RecoMetaModel
21 include_fk = True
24class RecoMetaBase(SQLAlchemyAutoSchema):
25 class Meta(RecoMetaMeta):
26 fields = ("rating", "last_rating_date", "review_see_count",
27 "last_review_see_date", "count", "last_count_increment")
30class RecoMetaApplicationItem(SQLAlchemyAutoSchema):
31 application = ma.Nested("ApplicationBase")
33 class Meta(RecoMetaMeta):
34 fields = ("application", "rating", "last_rating_date", "review_see_count",
35 "last_review_see_date", "count", "last_count_increment")
38class RecoMetaBookItem(SQLAlchemyAutoSchema):
39 book = ma.Nested("BookBase")
41 class Meta(RecoMetaMeta):
42 fields = ("book", "rating", "last_rating_date", "review_see_count",
43 "last_review_see_date", "count", "last_count_increment")
46class RecoMetaGameItem(SQLAlchemyAutoSchema):
47 game = ma.Nested("GameBase")
49 class Meta(RecoMetaMeta):
50 fields = ("game", "rating", "last_rating_date", "review_see_count",
51 "last_review_see_date", "count", "last_count_increment")
54class RecoMetaMovieItem(SQLAlchemyAutoSchema):
55 movie = ma.Nested("MovieBase")
57 class Meta(RecoMetaMeta):
58 fields = ("movie", "rating", "last_rating_date", "review_see_count",
59 "last_review_see_date", "count", "last_count_increment")
62class RecoMetaSerieItem(SQLAlchemyAutoSchema):
63 serie = ma.Nested("SerieBase")
65 class Meta(RecoMetaMeta):
66 fields = ("serie", "rating", "last_rating_date", "review_see_count",
67 "last_review_see_date", "count", "last_count_increment")
70class RecoMetaTrackItem(SQLAlchemyAutoSchema):
71 track = ma.Nested("TrackBase")
73 class Meta(RecoMetaMeta):
74 fields = ("track", "rating", "last_rating_date", "review_see_count",
75 "last_review_see_date", "count", "last_count_increment")
77# ---------------------------
80class RecoResultMeta:
81 model = RecoResultModel
82 include_fk = True
85class RecoResultBase(SQLAlchemyAutoSchema):
86 class Meta(RecoResultMeta):
87 fields = ("content_id", "score", "engine")
90class RecoResultApplicationItem(SQLAlchemyAutoSchema):
91 application = ma.Nested("ApplicationBase")
93 class Meta(RecoResultMeta):
94 fields = ("application", "score", "engine")
97class RecoResultBookItem(SQLAlchemyAutoSchema):
98 book = ma.Nested("BookBase")
100 class Meta(RecoResultMeta):
101 fields = ("book", "score", "engine")
104class RecoResultGameItem(SQLAlchemyAutoSchema):
105 game = ma.Nested("GameBase")
107 class Meta(RecoResultMeta):
108 fields = ("game", "score", "engine")
111class RecoResultMovieItem(SQLAlchemyAutoSchema):
112 movie = ma.Nested("MovieBase")
114 class Meta(RecoResultMeta):
115 fields = ("movie", "score", "engine")
118class RecoResultSerieItem(SQLAlchemyAutoSchema):
119 serie = ma.Nested("SerieBase")
121 class Meta(RecoResultMeta):
122 fields = ("serie", "score", "engine")
125class RecoResultTrackItem(SQLAlchemyAutoSchema):
126 track = ma.Nested("TrackBase")
128 class Meta(RecoResultMeta):
129 fields = ("track", "score", "engine")
131# ---------------------------
134class RecommendationLaunchedForProfileMeta:
135 model = RecommendationLaunchedForProfileEvent
136 include_fk = True
139class RecommendationLaunchedForProfileBase(SQLAlchemyAutoSchema):
140 profile = ma.Nested("ProfileBase")
142 class Meta(RecommendationLaunchedForProfileMeta):
143 fields = ("profile", "id", "occured_at")
146class RecommendationLaunchedForProfileItem(SQLAlchemyAutoSchema):
147 profile = ma.Nested("ProfileBase")
148 liked_genres = ma.Nested("RecoLaunchedLikedGenreItem", many=True)
150 class Meta(RecommendationLaunchedForProfileMeta):
151 fields = ("profile", "liked_genres", "id", "occured_at")