{"action":"created","comment":{"url":"https://api.github.com/repos/prismagraphql/prisma/pulls/comments/190164390","pull_request_review_id":122482332,"id":190164390,"diff_hunk":"@@ -175,60 +175,70 @@ class ObjectTypeBuilder(\n     List(whereArgument(model, project))\n   }\n \n-  def generateFilterElement(input: Map[String, Any], model: Model, isSubscriptionFilter: Boolean = false): DataItemFilterCollection = {\n+  def generateFilterElement(input: Map[String, Any], model: Model, isSubscriptionFilter: Boolean = false): Filter = {\n     val filterArguments = new FilterArguments(model, isSubscriptionFilter)\n \n-    input\n-      .map {\n-        case (key, value) =>\n-          val FieldFilterTuple(field, filter) = filterArguments.lookup(key)\n-          value match {\n-            case value: Map[_, _] =>\n-              val typedValue = value.asInstanceOf[Map[String, Any]]\n-              if (List(\"AND\", \"OR\", \"NOT\").contains(key) || (isSubscriptionFilter && key == \"node\")) {\n-                generateFilterElement(typedValue, model, isSubscriptionFilter)\n-              } else {\n-                // this must be a relation filter\n-                TransitiveRelationFilter(\n-                  project.schema,\n-                  field.get,\n-                  model,\n-                  field.get.relatedModel.get,\n-                  field.get.relation.get,\n-                  filter.name,\n-                  generateFilterElement(typedValue, field.get.relatedModel.get, isSubscriptionFilter)\n-                )\n-              }\n-\n-            case value: Seq[Any] if value.nonEmpty && value.head.isInstanceOf[Map[_, _]] =>\n-              FilterElement(key, value.asInstanceOf[Seq[Map[String, Any]]].map(x => generateFilterElement(x, model, isSubscriptionFilter)), None, filter.name)\n-\n-            //-------- non recursive\n-\n-            case value: Seq[Any] if field.isDefined && field.get.isScalar =>\n-              val converter = GCAnyConverter(field.get.typeIdentifier, isList = false)\n-              FinalValueFilter(key, ListGCValue(value.map(x => converter.toGCValue(x).get).toVector), field.get, filter.name)\n-\n-            case Some(filterValue) if field.isDefined && field.get.isScalar =>\n-              val converter = GCAnyConverter(field.get.typeIdentifier, isList = false)\n-              FinalValueFilter(key, converter.toGCValue(filterValue).get, field.get, filter.name)\n-\n-            case Some(filterValue) if field.isDefined && field.get.isRelation =>\n-              FinalRelationFilter(project.schema, key, filterValue, field.get, filter.name)\n-\n-            case valueNew if field.isDefined && field.get.isRelation =>\n-              FinalRelationFilter(project.schema, key, valueNew, field.get, filter.name)\n-\n-            case valueNew if field.isDefined && field.get.isScalar =>\n-              val converter = GCAnyConverter(field.get.typeIdentifier, isList = false)\n-              FinalValueFilter(key, converter.toGCValue(valueNew).get, field.get, filter.name)\n-\n-            case _ =>\n-              FilterElement(key, value, field, filter.name)\n-          }\n-      }\n-      .toList\n-      .asInstanceOf[DataItemFilterCollection]\n+    val filters = input.map {\n+      case (key, value) =>\n+        val FieldFilterTuple(field, filter)                                    = filterArguments.lookup(key)\n+        def isScalarNonListFilter(filterName: String): Boolean                 = field.isDefined && field.get.isScalar && !field.get.isList && filter.name == filterName\n+        def isScalarListFilter(filterName: String): Boolean                    = field.isDefined && field.get.isScalar && field.get.isList && filter.name == filterName\n+        def isRelationFilter(filterName: String): Boolean                      = field.isDefined && field.get.isRelation && filter.name == filterName\n+        def isOneRelationFilter(filterName: String): Boolean                   = isRelationFilter(filterName) && !field.get.isList\n+        def isManyRelationFilter(filterName: String): Boolean                  = isRelationFilter(filterName) && field.get.isList\n+        def isFilterList(value: Seq[Any], filterName: String): Boolean         = value.nonEmpty && value.head.isInstanceOf[Map[_, _]] && filter.name == filterName\n+        def getGCValue(value: Any): GCValue                                    = GCAnyConverter(field.get.typeIdentifier, isList = false).toGCValue(unwrapSome(value)).get\n+        def scalarFilter(condition: ScalarCondition): ScalarFilter             = ScalarFilter(field.get, condition)\n+        def scalarListFilter(condition: ScalarListCondition): ScalarListFilter = ScalarListFilter(key, field.get, condition)\n+        def generateSubFilter(value: Map[_, _], model: Model): Filter          = generateFilterElement(value.asInstanceOf[Map[String, Any]], model, isSubscriptionFilter)\n+        def generateSubFilters(values: Seq[Any]): Vector[Filter]               = values.map(x => generateSubFilter(x.asInstanceOf[Map[String, Any]], model)).toVector\n+        def relationFilter(value: Map[_, _], condition: RelationCondition): RelationFilter =\n+          RelationFilter(field.get, generateSubFilter(value, field.get.relatedModel_!), condition)\n+\n+        value match {\n+          //-------------------------RECURSION-----------------------------\n+          case value: Map[_, _] if isLogicFilter(key) || (isSubscriptionFilter && key == \"node\") => generateSubFilter(value, model)\n+          case value: Map[_, _] if isManyRelationFilter(filterName = \"_every\")                   => relationFilter(value, EveryRelatedNode)\n+          case value: Map[_, _] if isManyRelationFilter(filterName = \"_some\")                    => relationFilter(value, AtLeastOneRelatedNode)\n+          case value: Map[_, _] if isManyRelationFilter(filterName = \"_none\")                    => relationFilter(value, NoRelatedNode)\n+          case value: Map[_, _] if isRelationFilter(filterName = \"\")                             => relationFilter(value, NoRelationCondition)\n+          case value: Seq[Any] if isFilterList(value, filterName = \"AND\")                        => AndFilter(generateSubFilters(value))\n+          case value: Seq[Any] if isFilterList(value, filterName = \"OR\")                         => OrFilter(generateSubFilters(value))\n+          case value: Seq[Any] if isFilterList(value, filterName = \"NOT\")                        => NotFilter(generateSubFilters(value))\n+          case value: Seq[Any] if isFilterList(value, filterName = \"node\")                       => NodeFilter(generateSubFilters(value))\n+          //--------------------------ANCHORS------------------------------\n+          case values: Seq[Any] if isScalarListFilter(filterName = \"_contains_every\") => scalarListFilter(ListContainsEvery(values.map(getGCValue).toVector))\n+          case values: Seq[Any] if isScalarListFilter(filterName = \"_contains_some\")  => scalarListFilter(ListContainsSome(values.map(getGCValue).toVector))\n+          case value if isScalarListFilter(filterName = \"_contains\")                  => scalarListFilter(ListContains(getGCValue(value)))\n+          case values: Seq[Any] if isScalarNonListFilter(filterName = \"_in\")          => scalarFilter(In(values.map(getGCValue).toVector))\n+          case null if isScalarNonListFilter(filterName = \"_in\")                      => scalarFilter(In(Vector(NullGCValue)))\n+          case values: Seq[Any] if isScalarNonListFilter(filterName = \"_not_in\")      => scalarFilter(NotIn(values.map(getGCValue).toVector))\n+          case null if isScalarNonListFilter(filterName = \"_not_in\")                  => scalarFilter(NotIn(Vector(NullGCValue)))\n+          case value if isScalarNonListFilter(filterName = \"\")                        => scalarFilter(Equals(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_not\")                    => scalarFilter(NotEquals(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_contains\")               => scalarFilter(Contains(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_not_contains\")           => scalarFilter(NotContains(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_starts_with\")            => scalarFilter(StartsWith(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_not_starts_with\")        => scalarFilter(NotStartsWith(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_ends_with\")              => scalarFilter(EndsWith(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_not_ends_with\")          => scalarFilter(NotEndsWith(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_lt\")                     => scalarFilter(LessThan(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_lte\")                    => scalarFilter(LessThanOrEquals(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_gt\")                     => scalarFilter(GreaterThan(getGCValue(value)))\n+          case value if isScalarNonListFilter(filterName = \"_gte\")                    => scalarFilter(GreaterThanOrEquals(getGCValue(value)))\n+          case _ if isOneRelationFilter(filterName = \"\")                              => OneRelationIsNullFilter(field.get)\n+          case value: Boolean if field.isEmpty && filter.name == \"boolean\"            => PreComputedSubscriptionFilter(value)\n+          case None if field.isDefined                                                => NodeSubscriptionFilter()\n+          case null if field.isDefined && field.get.isList && field.get.isRelation    => throw APIErrors.FilterCannotBeNullOnToManyField(field.get.name)","path":"server/servers/api/src/main/scala/com/prisma/api/schema/ObjectTypeBuilder.scala","position":138,"original_position":138,"commit_id":"d2d99bf0c7c84857ea29762f1071dc7afc61202a","original_commit_id":"d2d99bf0c7c84857ea29762f1071dc7afc61202a","user":{"login":"codacy-bot","id":19940114,"avatar_url":"https://avatars1.githubusercontent.com/u/19940114?v=4","gravatar_id":"","url":"https://api.github.com/users/codacy-bot","html_url":"https://github.com/codacy-bot","followers_url":"https://api.github.com/users/codacy-bot/followers","following_url":"https://api.github.com/users/codacy-bot/following{/other_user}","gists_url":"https://api.github.com/users/codacy-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codacy-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codacy-bot/subscriptions","organizations_url":"https://api.github.com/users/codacy-bot/orgs","repos_url":"https://api.github.com/users/codacy-bot/repos","events_url":"https://api.github.com/users/codacy-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codacy-bot/received_events","type":"User","site_admin":false},"body":"![Codacy](https://app.codacy.com/assets/images/favicon.png) Issue found: [Avoid using null](https://app.codacy.com/app/graphcool/prisma/pullRequest?prid=1667829)","created_at":"2018-05-23T08:35:35Z","updated_at":"2018-05-23T08:35:35Z","html_url":"https://github.com/prismagraphql/prisma/pull/2470#discussion_r190164390","pull_request_url":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/prismagraphql/prisma/pulls/comments/190164390"},"html":{"href":"https://github.com/prismagraphql/prisma/pull/2470#discussion_r190164390"},"pull_request":{"href":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470"}}},"pull_request":{"url":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470","id":189077135,"html_url":"https://github.com/prismagraphql/prisma/pull/2470","diff_url":"https://github.com/prismagraphql/prisma/pull/2470.diff","patch_url":"https://github.com/prismagraphql/prisma/pull/2470.patch","issue_url":"https://api.github.com/repos/prismagraphql/prisma/issues/2470","number":2470,"state":"open","locked":false,"title":"[WIP] Refactor Filters","user":{"login":"do4gr","id":16278407,"avatar_url":"https://avatars2.githubusercontent.com/u/16278407?v=4","gravatar_id":"","url":"https://api.github.com/users/do4gr","html_url":"https://github.com/do4gr","followers_url":"https://api.github.com/users/do4gr/followers","following_url":"https://api.github.com/users/do4gr/following{/other_user}","gists_url":"https://api.github.com/users/do4gr/gists{/gist_id}","starred_url":"https://api.github.com/users/do4gr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/do4gr/subscriptions","organizations_url":"https://api.github.com/users/do4gr/orgs","repos_url":"https://api.github.com/users/do4gr/repos","events_url":"https://api.github.com/users/do4gr/events{/privacy}","received_events_url":"https://api.github.com/users/do4gr/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-05-18T16:34:14Z","updated_at":"2018-05-23T08:35:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3bed2802dab856233d1ccf7ef7501616a934043a","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470/commits","review_comments_url":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470/comments","review_comment_url":"https://api.github.com/repos/prismagraphql/prisma/pulls/comments{/number}","comments_url":"https://api.github.com/repos/prismagraphql/prisma/issues/2470/comments","statuses_url":"https://api.github.com/repos/prismagraphql/prisma/statuses/d2d99bf0c7c84857ea29762f1071dc7afc61202a","head":{"label":"prismagraphql:FlattenNestedSQLQueries","ref":"FlattenNestedSQLQueries","sha":"d2d99bf0c7c84857ea29762f1071dc7afc61202a","user":{"login":"prismagraphql","id":17219288,"avatar_url":"https://avatars0.githubusercontent.com/u/17219288?v=4","gravatar_id":"","url":"https://api.github.com/users/prismagraphql","html_url":"https://github.com/prismagraphql","followers_url":"https://api.github.com/users/prismagraphql/followers","following_url":"https://api.github.com/users/prismagraphql/following{/other_user}","gists_url":"https://api.github.com/users/prismagraphql/gists{/gist_id}","starred_url":"https://api.github.com/users/prismagraphql/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prismagraphql/subscriptions","organizations_url":"https://api.github.com/users/prismagraphql/orgs","repos_url":"https://api.github.com/users/prismagraphql/repos","events_url":"https://api.github.com/users/prismagraphql/events{/privacy}","received_events_url":"https://api.github.com/users/prismagraphql/received_events","type":"Organization","site_admin":false},"repo":{"id":69164196,"name":"prisma","full_name":"prismagraphql/prisma","owner":{"login":"prismagraphql","id":17219288,"avatar_url":"https://avatars0.githubusercontent.com/u/17219288?v=4","gravatar_id":"","url":"https://api.github.com/users/prismagraphql","html_url":"https://github.com/prismagraphql","followers_url":"https://api.github.com/users/prismagraphql/followers","following_url":"https://api.github.com/users/prismagraphql/following{/other_user}","gists_url":"https://api.github.com/users/prismagraphql/gists{/gist_id}","starred_url":"https://api.github.com/users/prismagraphql/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prismagraphql/subscriptions","organizations_url":"https://api.github.com/users/prismagraphql/orgs","repos_url":"https://api.github.com/users/prismagraphql/repos","events_url":"https://api.github.com/users/prismagraphql/events{/privacy}","received_events_url":"https://api.github.com/users/prismagraphql/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/prismagraphql/prisma","description":"⚡️ Prisma turns your database into a realtime GraphQL API","fork":false,"url":"https://api.github.com/repos/prismagraphql/prisma","forks_url":"https://api.github.com/repos/prismagraphql/prisma/forks","keys_url":"https://api.github.com/repos/prismagraphql/prisma/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prismagraphql/prisma/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prismagraphql/prisma/teams","hooks_url":"https://api.github.com/repos/prismagraphql/prisma/hooks","issue_events_url":"https://api.github.com/repos/prismagraphql/prisma/issues/events{/number}","events_url":"https://api.github.com/repos/prismagraphql/prisma/events","assignees_url":"https://api.github.com/repos/prismagraphql/prisma/assignees{/user}","branches_url":"https://api.github.com/repos/prismagraphql/prisma/branches{/branch}","tags_url":"https://api.github.com/repos/prismagraphql/prisma/tags","blobs_url":"https://api.github.com/repos/prismagraphql/prisma/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prismagraphql/prisma/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prismagraphql/prisma/git/refs{/sha}","trees_url":"https://api.github.com/repos/prismagraphql/prisma/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prismagraphql/prisma/statuses/{sha}","languages_url":"https://api.github.com/repos/prismagraphql/prisma/languages","stargazers_url":"https://api.github.com/repos/prismagraphql/prisma/stargazers","contributors_url":"https://api.github.com/repos/prismagraphql/prisma/contributors","subscribers_url":"https://api.github.com/repos/prismagraphql/prisma/subscribers","subscription_url":"https://api.github.com/repos/prismagraphql/prisma/subscription","commits_url":"https://api.github.com/repos/prismagraphql/prisma/commits{/sha}","git_commits_url":"https://api.github.com/repos/prismagraphql/prisma/git/commits{/sha}","comments_url":"https://api.github.com/repos/prismagraphql/prisma/comments{/number}","issue_comment_url":"https://api.github.com/repos/prismagraphql/prisma/issues/comments{/number}","contents_url":"https://api.github.com/repos/prismagraphql/prisma/contents/{+path}","compare_url":"https://api.github.com/repos/prismagraphql/prisma/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prismagraphql/prisma/merges","archive_url":"https://api.github.com/repos/prismagraphql/prisma/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prismagraphql/prisma/downloads","issues_url":"https://api.github.com/repos/prismagraphql/prisma/issues{/number}","pulls_url":"https://api.github.com/repos/prismagraphql/prisma/pulls{/number}","milestones_url":"https://api.github.com/repos/prismagraphql/prisma/milestones{/number}","notifications_url":"https://api.github.com/repos/prismagraphql/prisma/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prismagraphql/prisma/labels{/name}","releases_url":"https://api.github.com/repos/prismagraphql/prisma/releases{/id}","deployments_url":"https://api.github.com/repos/prismagraphql/prisma/deployments","created_at":"2016-09-25T12:54:40Z","updated_at":"2018-05-23T08:33:06Z","pushed_at":"2018-05-23T08:32:47Z","git_url":"git://github.com/prismagraphql/prisma.git","ssh_url":"git@github.com:prismagraphql/prisma.git","clone_url":"https://github.com/prismagraphql/prisma.git","svn_url":"https://github.com/prismagraphql/prisma","homepage":"https://www.prisma.io/","size":16982,"stargazers_count":8350,"watchers_count":8350,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":456,"mirror_url":null,"archived":false,"open_issues_count":454,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":456,"open_issues":454,"watchers":8350,"default_branch":"master"}},"base":{"label":"prismagraphql:alpha","ref":"alpha","sha":"ec9ca7158673e41c5aa0a113daf9330b29d7e49c","user":{"login":"prismagraphql","id":17219288,"avatar_url":"https://avatars0.githubusercontent.com/u/17219288?v=4","gravatar_id":"","url":"https://api.github.com/users/prismagraphql","html_url":"https://github.com/prismagraphql","followers_url":"https://api.github.com/users/prismagraphql/followers","following_url":"https://api.github.com/users/prismagraphql/following{/other_user}","gists_url":"https://api.github.com/users/prismagraphql/gists{/gist_id}","starred_url":"https://api.github.com/users/prismagraphql/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prismagraphql/subscriptions","organizations_url":"https://api.github.com/users/prismagraphql/orgs","repos_url":"https://api.github.com/users/prismagraphql/repos","events_url":"https://api.github.com/users/prismagraphql/events{/privacy}","received_events_url":"https://api.github.com/users/prismagraphql/received_events","type":"Organization","site_admin":false},"repo":{"id":69164196,"name":"prisma","full_name":"prismagraphql/prisma","owner":{"login":"prismagraphql","id":17219288,"avatar_url":"https://avatars0.githubusercontent.com/u/17219288?v=4","gravatar_id":"","url":"https://api.github.com/users/prismagraphql","html_url":"https://github.com/prismagraphql","followers_url":"https://api.github.com/users/prismagraphql/followers","following_url":"https://api.github.com/users/prismagraphql/following{/other_user}","gists_url":"https://api.github.com/users/prismagraphql/gists{/gist_id}","starred_url":"https://api.github.com/users/prismagraphql/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prismagraphql/subscriptions","organizations_url":"https://api.github.com/users/prismagraphql/orgs","repos_url":"https://api.github.com/users/prismagraphql/repos","events_url":"https://api.github.com/users/prismagraphql/events{/privacy}","received_events_url":"https://api.github.com/users/prismagraphql/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/prismagraphql/prisma","description":"⚡️ Prisma turns your database into a realtime GraphQL API","fork":false,"url":"https://api.github.com/repos/prismagraphql/prisma","forks_url":"https://api.github.com/repos/prismagraphql/prisma/forks","keys_url":"https://api.github.com/repos/prismagraphql/prisma/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prismagraphql/prisma/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prismagraphql/prisma/teams","hooks_url":"https://api.github.com/repos/prismagraphql/prisma/hooks","issue_events_url":"https://api.github.com/repos/prismagraphql/prisma/issues/events{/number}","events_url":"https://api.github.com/repos/prismagraphql/prisma/events","assignees_url":"https://api.github.com/repos/prismagraphql/prisma/assignees{/user}","branches_url":"https://api.github.com/repos/prismagraphql/prisma/branches{/branch}","tags_url":"https://api.github.com/repos/prismagraphql/prisma/tags","blobs_url":"https://api.github.com/repos/prismagraphql/prisma/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prismagraphql/prisma/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prismagraphql/prisma/git/refs{/sha}","trees_url":"https://api.github.com/repos/prismagraphql/prisma/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prismagraphql/prisma/statuses/{sha}","languages_url":"https://api.github.com/repos/prismagraphql/prisma/languages","stargazers_url":"https://api.github.com/repos/prismagraphql/prisma/stargazers","contributors_url":"https://api.github.com/repos/prismagraphql/prisma/contributors","subscribers_url":"https://api.github.com/repos/prismagraphql/prisma/subscribers","subscription_url":"https://api.github.com/repos/prismagraphql/prisma/subscription","commits_url":"https://api.github.com/repos/prismagraphql/prisma/commits{/sha}","git_commits_url":"https://api.github.com/repos/prismagraphql/prisma/git/commits{/sha}","comments_url":"https://api.github.com/repos/prismagraphql/prisma/comments{/number}","issue_comment_url":"https://api.github.com/repos/prismagraphql/prisma/issues/comments{/number}","contents_url":"https://api.github.com/repos/prismagraphql/prisma/contents/{+path}","compare_url":"https://api.github.com/repos/prismagraphql/prisma/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prismagraphql/prisma/merges","archive_url":"https://api.github.com/repos/prismagraphql/prisma/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prismagraphql/prisma/downloads","issues_url":"https://api.github.com/repos/prismagraphql/prisma/issues{/number}","pulls_url":"https://api.github.com/repos/prismagraphql/prisma/pulls{/number}","milestones_url":"https://api.github.com/repos/prismagraphql/prisma/milestones{/number}","notifications_url":"https://api.github.com/repos/prismagraphql/prisma/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prismagraphql/prisma/labels{/name}","releases_url":"https://api.github.com/repos/prismagraphql/prisma/releases{/id}","deployments_url":"https://api.github.com/repos/prismagraphql/prisma/deployments","created_at":"2016-09-25T12:54:40Z","updated_at":"2018-05-23T08:33:06Z","pushed_at":"2018-05-23T08:32:47Z","git_url":"git://github.com/prismagraphql/prisma.git","ssh_url":"git@github.com:prismagraphql/prisma.git","clone_url":"https://github.com/prismagraphql/prisma.git","svn_url":"https://github.com/prismagraphql/prisma","homepage":"https://www.prisma.io/","size":16982,"stargazers_count":8350,"watchers_count":8350,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":456,"mirror_url":null,"archived":false,"open_issues_count":454,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":456,"open_issues":454,"watchers":8350,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470"},"html":{"href":"https://github.com/prismagraphql/prisma/pull/2470"},"issue":{"href":"https://api.github.com/repos/prismagraphql/prisma/issues/2470"},"comments":{"href":"https://api.github.com/repos/prismagraphql/prisma/issues/2470/comments"},"review_comments":{"href":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470/comments"},"review_comment":{"href":"https://api.github.com/repos/prismagraphql/prisma/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/prismagraphql/prisma/pulls/2470/commits"},"statuses":{"href":"https://api.github.com/repos/prismagraphql/prisma/statuses/d2d99bf0c7c84857ea29762f1071dc7afc61202a"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"codacy-bot"}}