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

1# Game Schemas 

2from marshmallow import fields 

3from src import ma 

4from src.model import GameModel, GameAdditionalModel 

5from src.utils import SQLAlchemyAutoSchema 

6from .genre_schema import GenreBase 

7 

8 

9class GameMeta: 

10 model = GameModel 

11 include_fk = True 

12 

13 

14class GameBase(SQLAlchemyAutoSchema): 

15 rating = fields.Function(lambda obj: obj.content.rating) 

16 rating_count = fields.Function(lambda obj: obj.content.rating_count) 

17 popularity_score = fields.Function( 

18 lambda obj: obj.content.popularity_score) 

19 

20 game_id = ma.Function(lambda obj: obj.game_id) 

21 

22 class Meta(GameMeta): 

23 pass 

24 

25 

26class GameObject(GameBase): 

27 genres = fields.Method("build_genres") 

28 

29 def build_genres(self, obj): 

30 return GenreBase.loads(obj.content.genres) 

31 

32 

33class GameExtra(GameObject): 

34 # Extra fields from join with 'recommended_application' 

35 reco_engine = fields.String(attribute="engine", default=None) 

36 reco_score = fields.Float(attribute="score", default=None) 

37 

38# ---- 

39 

40class GameAdditionalMeta: 

41 model = GameAdditionalModel 

42 include_fk = True 

43 

44class GameAdditionalBase(SQLAlchemyAutoSchema): 

45 class Meta(GameAdditionalMeta): 

46 pass