Skip to content

Commit

Permalink
Thin Down V1 API Models (#712)
Browse files Browse the repository at this point in the history
* Track model

* User model

* Playlists model

* Common response model

* Fix remix_of ID

* PR revision
  • Loading branch information
piazzatron committed Aug 3, 2020
1 parent 867f9b5 commit 508ae6a
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 55 deletions.
26 changes: 13 additions & 13 deletions discovery-provider/src/api/v1/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,18 @@ def extend_favorite(favorite):
favorite["save_item_id"] = encode_int_id(favorite["save_item_id"])
return favorite

def extend_remix_of(remix_of):
def extend_track_element(track):
track_id = track["parent_track_id"]
track["parent_track_id"] = encode_int_id(track_id)
return track

if not remix_of or not "tracks" in remix_of or not remix_of["tracks"]:
return remix_of

remix_of["tracks"] = list(map(extend_track_element, remix_of["tracks"]))
return remix_of

def extend_track(track):
track_id = encode_int_id(track["track_id"])
owner_id = encode_int_id(track["owner_id"])
Expand All @@ -104,7 +116,7 @@ def extend_track(track):
track["followee_saves"] = list(map(extend_favorite, track["followee_saves"]))
track["followee_resposts"] = list(map(extend_repost, track["followee_reposts"]))
track = add_track_artwork(track)

track["remix_of"] = extend_remix_of(track["remix_of"])
return track

def extend_playlist(playlist):
Expand All @@ -127,20 +139,8 @@ def decode_with_abort(identifier, namespace):
return decoded

def make_response(name, namespace, modelType):
version_metadata = namespace.model("version_metadata", {
"service": fields.String(required=True),
"version": fields.String(required=True)
})

return namespace.model(name, {
"data": modelType,
"latest_chain_block": fields.Integer(required=True),
"latest_indexed_block": fields.Integer(required=True),
"owner_wallet": fields.Integer(required=True),
"signature": fields.String(required=True),
"success": fields.Boolean(required=True),
"timestamp": fields.String(required=True) ,
"version": fields.Nested(version_metadata, required=True),
})


Expand Down
15 changes: 15 additions & 0 deletions discovery-provider/src/api/v1/models/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,18 @@
"save_type": fields.String(required=True),
"user_id": fields.String(required=True)
})

version_metadata = ns.model("version_metadata", {
"service": fields.String(required=True),
"version": fields.String(required=True)
})

full_response = ns.model("full_response", {
"latest_chain_block": fields.Integer(required=True),
"latest_indexed_block": fields.Integer(required=True),
"owner_wallet": fields.Integer(required=True),
"signature": fields.String(required=True),
"success": fields.Boolean(required=True),
"timestamp": fields.String(required=True) ,
"version": fields.Nested(version_metadata, required=True),
})
21 changes: 12 additions & 9 deletions discovery-provider/src/api/v1/models/playlists.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,28 @@

playlist_model = ns.model('playlist', {
"artwork": fields.Nested(playlist_artwork, allow_null=True),
"description": fields.String,
"id": fields.String(required=True),
"is_album": fields.Boolean(required=True),
"playlist_name": fields.String(required=True),
"repost_count": fields.Integer(required=True),
"save_count": fields.Integer(required=True),
"user": fields.Nested(user_model, required=True),
})

playlist_full = ns.model('playlist_full', playlist_model, {
"blockhash": fields.String(required=True),
"blocknumber": fields.Integer(required=True),
"created_at": fields.String,
"description": fields.String,
"followee_reposts": fields.List(fields.Nested(repost)),
"followee_saves": fields.List(fields.Nested(favorite)),
"has_current_user_reposted": fields.Boolean(required=True),
"has_current_user_saved true": fields.Boolean(required=True),
"id": fields.String(required=True),
"is_album": fields.Boolean(required=True),
"is_current": fields.Boolean(required=True),
"is_delete": fields.Boolean(required=True),
"is_private": fields.Boolean(required=True),
"playlist_contents": fields.Nested(playlist_contents, required=True),
"playlist_name": fields.String(required=True),
"repost_count": fields.Integer(required=True),
"save_count": fields.Integer(required=True),
"upc": fields.String,
"updated_at": fields.String,
"user": fields.Nested(user_model, required=True),
"playlist_contents": fields.Nested(playlist_contents, required=True),
"user_id": fields.String(required=True),
})
})
46 changes: 24 additions & 22 deletions discovery-provider/src/api/v1/models/tracks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
})

track_element = ns.model('track_element', {
"parent_track_id": fields.Integer(required=True)
"parent_track_id": fields.String(required=True)
})

remix_parent = ns.model('remix_parent', {
Expand Down Expand Up @@ -43,41 +43,43 @@
})
track = ns.model('Track', {
"artwork": fields.Nested(track_artwork, allow_null=True),
"description": fields.String,
"genre": fields.String,
"id": fields.String(required=True),
"length": fields.Integer,
"mood": fields.String,
"release_date": fields.String,
"remix_of": fields.Nested(remix_parent),
"repost_count": fields.Integer(required=True),
"route_id": fields.String(required=True),
"save_count": fields.Integer(required=True),
"tags": fields.String,
"title": fields.String(required=True),
"user": fields.Nested(user_model, required=True),
})

track_full = ns.clone('track_full', track, {
"blockhash": fields.String(required=True),
"blocknumber": fields.Integer(required=True),
"create_date": fields.String,
"created_at": fields.String,
"credits_splits": fields.String,
"description": fields.String,
"download": fields.Nested(download),
"isrc": fields.String,
"license": fields.String,
"iswc": fields.String,
"field_visibility": fields.Nested(field_visibility),
"file_type": fields.String,
"followee_reposts": fields.List(fields.Nested(repost), required=True),
"followee_saves": fields.List(fields.Nested(favorite), required=True),
"genre": fields.String,
"has_current_user_reposted": fields.Boolean(required=True),
"has_current_user_saved": fields.Boolean(required=True),
"id": fields.String(required=True),
"is_current": fields.Boolean(required=True),
"is_delete": fields.Boolean(required=True),
"is_unlisted": fields.Boolean(required=True),
"isrc": fields.String,
"iswc": fields.String,
"length": fields.Integer,
"license": fields.String,
"has_current_user_saved": fields.Boolean(required=True),
"followee_saves": fields.List(fields.Nested(favorite), required=True),
"file_type": fields.String,
"blocknumber": fields.Integer(required=True),
"metadata_multihash": fields.String(required=True),
"mood": fields.String,
"release_date": fields.String,
"remix_of": fields.Nested(remix_parent),
"repost_count": fields.Integer(required=True),
"route_id": fields.String(required=True),
"save_count": fields.Integer(required=True),
"stem_of": fields.Nested(stem_parent),
"tags": fields.String,
"title": fields.String(required=True),
"track_segments": fields.List(fields.Nested(track_segment)),
"updated_at": fields.String,
"user": fields.Nested(user_model, required=True),
"user_id": fields.String(required=True)
})

25 changes: 14 additions & 11 deletions discovery-provider/src/api/v1/models/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,29 +16,32 @@
user_model = ns.model("user", {
"album_count": fields.Integer(required=True),
"bio": fields.String,
"blockhash": fields.String(required=True),
"blocknumber": fields.Integer(required=True),
"cover_photo": fields.Nested(cover_photo, allow_null=True),
"created_at": fields.String(required=True),
"creator_node_endpoint": fields.String,
"current_user_followee_follow_count": fields.Integer(required=True),
"does_current_user_follow": fields.Boolean(required=True),
"followee_count": fields.Integer(required=True),
"follower_count": fields.Integer(required=True),
"handle": fields.String(required=True),
"handle_lc": fields.String(required=True),
"id": fields.String(required=True),
"is_creator": fields.Boolean(required=True),
"is_current": fields.Boolean(required=True),
"is_verified": fields.Boolean(required=True),
"location": fields.String,
"metadata_multihash": fields.String(required=True),
"name": fields.String(required=True),
"playlist_count": fields.Integer(required=True),
"profile_picture": fields.Nested(profile_picture, allow_null=True),
"repost_count": fields.Integer(required=True),
"track_blocknumber": fields.Integer(required=True),
"track_count": fields.Integer(required=True),
})

user_full = ns.clone("user_full", user_model, {
"blockhash": fields.String(required=True),
"blocknumber": fields.Integer(required=True),
"created_at": fields.String(required=True),
"creator_node_endpoint": fields.String,
"current_user_followee_follow_count": fields.Integer(required=True),
"does_current_user_follow": fields.Boolean(required=True),
"handle_lc": fields.String(required=True),
"is_creator": fields.Boolean(required=True),
"is_current": fields.Boolean(required=True),
"metadata_multihash": fields.String(required=True),
"track_blocknumber": fields.Integer(required=True),
"updated_at": fields.String(required=True),
"wallet": fields.String(required=True)
})

0 comments on commit 508ae6a

Please sign in to comment.