{"action":"created","comment":{"url":"https://api.github.com/repos/acm-uiuc/beats/pulls/comments/25649120","id":25649120,"diff_hunk":"@@ -113,6 +113,27 @@ class Vote(Base):\n                        primary_key=True)\n     user = Column(String(8), primary_key=True)\n \n+\n+class Playlist(Base):\n+    __tablename__ = 'playlists'\n+\n+    id = Column(Integer, primary_key=True)\n+    name = Column(String(100))\n+    user = Column(String(8))\n+\n+\n+class PlaylistItem(Base):\n+    __tablename__ = 'playlist_items'\n+\n+    playlist_id = Column(\n+        Integer, ForeignKey('playlists.id', ondelete='CASCADE'),\n+        primary_key=True)\n+    index = Column(Integer, primary_key=True, autoincrement=False)\n+    song_id = Column(Integer, ForeignKey('songs.id', ondelete='CASCADE'))\n+\n+    __table_args__ = (UniqueConstraint('playlist_id', 'song_id'),)","path":"db.py","position":31,"original_position":31,"commit_id":"93b19a32bdfcdfb0dd8c05b52cc685df7a7e37ff","original_commit_id":"93b19a32bdfcdfb0dd8c05b52cc685df7a7e37ff","user":{"login":"colegleason","id":232327,"avatar_url":"https://avatars.githubusercontent.com/u/232327?v=3","gravatar_id":"","url":"https://api.github.com/users/colegleason","html_url":"https://github.com/colegleason","followers_url":"https://api.github.com/users/colegleason/followers","following_url":"https://api.github.com/users/colegleason/following{/other_user}","gists_url":"https://api.github.com/users/colegleason/gists{/gist_id}","starred_url":"https://api.github.com/users/colegleason/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colegleason/subscriptions","organizations_url":"https://api.github.com/users/colegleason/orgs","repos_url":"https://api.github.com/users/colegleason/repos","events_url":"https://api.github.com/users/colegleason/events{/privacy}","received_events_url":"https://api.github.com/users/colegleason/received_events","type":"User","site_admin":false},"body":"Does this mean I can't have the same song in the playlist more than once?","created_at":"2015-03-02T23:22:25Z","updated_at":"2015-03-02T23:22:25Z","html_url":"https://github.com/acm-uiuc/beats/pull/53#discussion_r25649120","pull_request_url":"https://api.github.com/repos/acm-uiuc/beats/pulls/53","_links":{"self":{"href":"https://api.github.com/repos/acm-uiuc/beats/pulls/comments/25649120"},"html":{"href":"https://github.com/acm-uiuc/beats/pull/53#discussion_r25649120"},"pull_request":{"href":"https://api.github.com/repos/acm-uiuc/beats/pulls/53"}}},"pull_request":{"url":"https://api.github.com/repos/acm-uiuc/beats/pulls/53","id":30259026,"html_url":"https://github.com/acm-uiuc/beats/pull/53","diff_url":"https://github.com/acm-uiuc/beats/pull/53.diff","patch_url":"https://github.com/acm-uiuc/beats/pull/53.patch","issue_url":"https://api.github.com/repos/acm-uiuc/beats/issues/53","number":53,"state":"open","locked":false,"title":"Add playlist functionality","user":{"login":"Ruin0x11","id":6700637,"avatar_url":"https://avatars.githubusercontent.com/u/6700637?v=3","gravatar_id":"","url":"https://api.github.com/users/Ruin0x11","html_url":"https://github.com/Ruin0x11","followers_url":"https://api.github.com/users/Ruin0x11/followers","following_url":"https://api.github.com/users/Ruin0x11/following{/other_user}","gists_url":"https://api.github.com/users/Ruin0x11/gists{/gist_id}","starred_url":"https://api.github.com/users/Ruin0x11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ruin0x11/subscriptions","organizations_url":"https://api.github.com/users/Ruin0x11/orgs","repos_url":"https://api.github.com/users/Ruin0x11/repos","events_url":"https://api.github.com/users/Ruin0x11/events{/privacy}","received_events_url":"https://api.github.com/users/Ruin0x11/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-03-02T05:09:02Z","updated_at":"2015-03-02T23:22:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2231f17b25b6a7ee4101c2f06468cd65c1b59796","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/acm-uiuc/beats/pulls/53/commits","review_comments_url":"https://api.github.com/repos/acm-uiuc/beats/pulls/53/comments","review_comment_url":"https://api.github.com/repos/acm-uiuc/beats/pulls/comments{/number}","comments_url":"https://api.github.com/repos/acm-uiuc/beats/issues/53/comments","statuses_url":"https://api.github.com/repos/acm-uiuc/beats/statuses/93b19a32bdfcdfb0dd8c05b52cc685df7a7e37ff","head":{"label":"Ruin0x11:playlists","ref":"playlists","sha":"93b19a32bdfcdfb0dd8c05b52cc685df7a7e37ff","user":{"login":"Ruin0x11","id":6700637,"avatar_url":"https://avatars.githubusercontent.com/u/6700637?v=3","gravatar_id":"","url":"https://api.github.com/users/Ruin0x11","html_url":"https://github.com/Ruin0x11","followers_url":"https://api.github.com/users/Ruin0x11/followers","following_url":"https://api.github.com/users/Ruin0x11/following{/other_user}","gists_url":"https://api.github.com/users/Ruin0x11/gists{/gist_id}","starred_url":"https://api.github.com/users/Ruin0x11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ruin0x11/subscriptions","organizations_url":"https://api.github.com/users/Ruin0x11/orgs","repos_url":"https://api.github.com/users/Ruin0x11/repos","events_url":"https://api.github.com/users/Ruin0x11/events{/privacy}","received_events_url":"https://api.github.com/users/Ruin0x11/received_events","type":"User","site_admin":false},"repo":{"id":23896248,"name":"beats","full_name":"Ruin0x11/beats","owner":{"login":"Ruin0x11","id":6700637,"avatar_url":"https://avatars.githubusercontent.com/u/6700637?v=3","gravatar_id":"","url":"https://api.github.com/users/Ruin0x11","html_url":"https://github.com/Ruin0x11","followers_url":"https://api.github.com/users/Ruin0x11/followers","following_url":"https://api.github.com/users/Ruin0x11/following{/other_user}","gists_url":"https://api.github.com/users/Ruin0x11/gists{/gist_id}","starred_url":"https://api.github.com/users/Ruin0x11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ruin0x11/subscriptions","organizations_url":"https://api.github.com/users/Ruin0x11/orgs","repos_url":"https://api.github.com/users/Ruin0x11/repos","events_url":"https://api.github.com/users/Ruin0x11/events{/privacy}","received_events_url":"https://api.github.com/users/Ruin0x11/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Ruin0x11/beats","description":"Beats by ACM","fork":true,"url":"https://api.github.com/repos/Ruin0x11/beats","forks_url":"https://api.github.com/repos/Ruin0x11/beats/forks","keys_url":"https://api.github.com/repos/Ruin0x11/beats/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Ruin0x11/beats/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Ruin0x11/beats/teams","hooks_url":"https://api.github.com/repos/Ruin0x11/beats/hooks","issue_events_url":"https://api.github.com/repos/Ruin0x11/beats/issues/events{/number}","events_url":"https://api.github.com/repos/Ruin0x11/beats/events","assignees_url":"https://api.github.com/repos/Ruin0x11/beats/assignees{/user}","branches_url":"https://api.github.com/repos/Ruin0x11/beats/branches{/branch}","tags_url":"https://api.github.com/repos/Ruin0x11/beats/tags","blobs_url":"https://api.github.com/repos/Ruin0x11/beats/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Ruin0x11/beats/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Ruin0x11/beats/git/refs{/sha}","trees_url":"https://api.github.com/repos/Ruin0x11/beats/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Ruin0x11/beats/statuses/{sha}","languages_url":"https://api.github.com/repos/Ruin0x11/beats/languages","stargazers_url":"https://api.github.com/repos/Ruin0x11/beats/stargazers","contributors_url":"https://api.github.com/repos/Ruin0x11/beats/contributors","subscribers_url":"https://api.github.com/repos/Ruin0x11/beats/subscribers","subscription_url":"https://api.github.com/repos/Ruin0x11/beats/subscription","commits_url":"https://api.github.com/repos/Ruin0x11/beats/commits{/sha}","git_commits_url":"https://api.github.com/repos/Ruin0x11/beats/git/commits{/sha}","comments_url":"https://api.github.com/repos/Ruin0x11/beats/comments{/number}","issue_comment_url":"https://api.github.com/repos/Ruin0x11/beats/issues/comments{/number}","contents_url":"https://api.github.com/repos/Ruin0x11/beats/contents/{+path}","compare_url":"https://api.github.com/repos/Ruin0x11/beats/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Ruin0x11/beats/merges","archive_url":"https://api.github.com/repos/Ruin0x11/beats/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Ruin0x11/beats/downloads","issues_url":"https://api.github.com/repos/Ruin0x11/beats/issues{/number}","pulls_url":"https://api.github.com/repos/Ruin0x11/beats/pulls{/number}","milestones_url":"https://api.github.com/repos/Ruin0x11/beats/milestones{/number}","notifications_url":"https://api.github.com/repos/Ruin0x11/beats/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Ruin0x11/beats/labels{/name}","releases_url":"https://api.github.com/repos/Ruin0x11/beats/releases{/id}","created_at":"2014-09-10T23:27:38Z","updated_at":"2015-02-10T01:03:01Z","pushed_at":"2015-03-02T05:11:57Z","git_url":"git://github.com/Ruin0x11/beats.git","ssh_url":"git@github.com:Ruin0x11/beats.git","clone_url":"https://github.com/Ruin0x11/beats.git","svn_url":"https://github.com/Ruin0x11/beats","homepage":"","size":962,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"acm-uiuc:master","ref":"master","sha":"dcb3021bcdc33d398bc549f3aebbe3aa654244be","user":{"login":"acm-uiuc","id":425738,"avatar_url":"https://avatars.githubusercontent.com/u/425738?v=3","gravatar_id":"","url":"https://api.github.com/users/acm-uiuc","html_url":"https://github.com/acm-uiuc","followers_url":"https://api.github.com/users/acm-uiuc/followers","following_url":"https://api.github.com/users/acm-uiuc/following{/other_user}","gists_url":"https://api.github.com/users/acm-uiuc/gists{/gist_id}","starred_url":"https://api.github.com/users/acm-uiuc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acm-uiuc/subscriptions","organizations_url":"https://api.github.com/users/acm-uiuc/orgs","repos_url":"https://api.github.com/users/acm-uiuc/repos","events_url":"https://api.github.com/users/acm-uiuc/events{/privacy}","received_events_url":"https://api.github.com/users/acm-uiuc/received_events","type":"Organization","site_admin":false},"repo":{"id":17146594,"name":"beats","full_name":"acm-uiuc/beats","owner":{"login":"acm-uiuc","id":425738,"avatar_url":"https://avatars.githubusercontent.com/u/425738?v=3","gravatar_id":"","url":"https://api.github.com/users/acm-uiuc","html_url":"https://github.com/acm-uiuc","followers_url":"https://api.github.com/users/acm-uiuc/followers","following_url":"https://api.github.com/users/acm-uiuc/following{/other_user}","gists_url":"https://api.github.com/users/acm-uiuc/gists{/gist_id}","starred_url":"https://api.github.com/users/acm-uiuc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acm-uiuc/subscriptions","organizations_url":"https://api.github.com/users/acm-uiuc/orgs","repos_url":"https://api.github.com/users/acm-uiuc/repos","events_url":"https://api.github.com/users/acm-uiuc/events{/privacy}","received_events_url":"https://api.github.com/users/acm-uiuc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/acm-uiuc/beats","description":"Beats by ACM","fork":false,"url":"https://api.github.com/repos/acm-uiuc/beats","forks_url":"https://api.github.com/repos/acm-uiuc/beats/forks","keys_url":"https://api.github.com/repos/acm-uiuc/beats/keys{/key_id}","collaborators_url":"https://api.github.com/repos/acm-uiuc/beats/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/acm-uiuc/beats/teams","hooks_url":"https://api.github.com/repos/acm-uiuc/beats/hooks","issue_events_url":"https://api.github.com/repos/acm-uiuc/beats/issues/events{/number}","events_url":"https://api.github.com/repos/acm-uiuc/beats/events","assignees_url":"https://api.github.com/repos/acm-uiuc/beats/assignees{/user}","branches_url":"https://api.github.com/repos/acm-uiuc/beats/branches{/branch}","tags_url":"https://api.github.com/repos/acm-uiuc/beats/tags","blobs_url":"https://api.github.com/repos/acm-uiuc/beats/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/acm-uiuc/beats/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/acm-uiuc/beats/git/refs{/sha}","trees_url":"https://api.github.com/repos/acm-uiuc/beats/git/trees{/sha}","statuses_url":"https://api.github.com/repos/acm-uiuc/beats/statuses/{sha}","languages_url":"https://api.github.com/repos/acm-uiuc/beats/languages","stargazers_url":"https://api.github.com/repos/acm-uiuc/beats/stargazers","contributors_url":"https://api.github.com/repos/acm-uiuc/beats/contributors","subscribers_url":"https://api.github.com/repos/acm-uiuc/beats/subscribers","subscription_url":"https://api.github.com/repos/acm-uiuc/beats/subscription","commits_url":"https://api.github.com/repos/acm-uiuc/beats/commits{/sha}","git_commits_url":"https://api.github.com/repos/acm-uiuc/beats/git/commits{/sha}","comments_url":"https://api.github.com/repos/acm-uiuc/beats/comments{/number}","issue_comment_url":"https://api.github.com/repos/acm-uiuc/beats/issues/comments{/number}","contents_url":"https://api.github.com/repos/acm-uiuc/beats/contents/{+path}","compare_url":"https://api.github.com/repos/acm-uiuc/beats/compare/{base}...{head}","merges_url":"https://api.github.com/repos/acm-uiuc/beats/merges","archive_url":"https://api.github.com/repos/acm-uiuc/beats/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/acm-uiuc/beats/downloads","issues_url":"https://api.github.com/repos/acm-uiuc/beats/issues{/number}","pulls_url":"https://api.github.com/repos/acm-uiuc/beats/pulls{/number}","milestones_url":"https://api.github.com/repos/acm-uiuc/beats/milestones{/number}","notifications_url":"https://api.github.com/repos/acm-uiuc/beats/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/acm-uiuc/beats/labels{/name}","releases_url":"https://api.github.com/repos/acm-uiuc/beats/releases{/id}","created_at":"2014-02-24T18:46:52Z","updated_at":"2015-01-29T17:41:39Z","pushed_at":"2015-01-29T17:41:38Z","git_url":"git://github.com/acm-uiuc/beats.git","ssh_url":"git@github.com:acm-uiuc/beats.git","clone_url":"https://github.com/acm-uiuc/beats.git","svn_url":"https://github.com/acm-uiuc/beats","homepage":"","size":1462,"stargazers_count":4,"watchers_count":4,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":26,"forks":7,"open_issues":26,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/acm-uiuc/beats/pulls/53"},"html":{"href":"https://github.com/acm-uiuc/beats/pull/53"},"issue":{"href":"https://api.github.com/repos/acm-uiuc/beats/issues/53"},"comments":{"href":"https://api.github.com/repos/acm-uiuc/beats/issues/53/comments"},"review_comments":{"href":"https://api.github.com/repos/acm-uiuc/beats/pulls/53/comments"},"review_comment":{"href":"https://api.github.com/repos/acm-uiuc/beats/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/acm-uiuc/beats/pulls/53/commits"},"statuses":{"href":"https://api.github.com/repos/acm-uiuc/beats/statuses/93b19a32bdfcdfb0dd8c05b52cc685df7a7e37ff"}}}}