{"action":"created","issue":{"url":"https://api.github.com/repos/GroceriStar/playing-with-graphql/issues/16","repository_url":"https://api.github.com/repos/GroceriStar/playing-with-graphql","labels_url":"https://api.github.com/repos/GroceriStar/playing-with-graphql/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/GroceriStar/playing-with-graphql/issues/16/comments","events_url":"https://api.github.com/repos/GroceriStar/playing-with-graphql/issues/16/events","html_url":"https://github.com/GroceriStar/playing-with-graphql/issues/16","id":342987951,"node_id":"MDU6SXNzdWUzNDI5ODc5NTE=","number":16,"title":"[GraphQL Basics course] [Main Task] [Darryl]","user":{"login":"atherdon","id":1469198,"node_id":"MDQ6VXNlcjE0NjkxOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/1469198?v=4","gravatar_id":"","url":"https://api.github.com/users/atherdon","html_url":"https://github.com/atherdon","followers_url":"https://api.github.com/users/atherdon/followers","following_url":"https://api.github.com/users/atherdon/following{/other_user}","gists_url":"https://api.github.com/users/atherdon/gists{/gist_id}","starred_url":"https://api.github.com/users/atherdon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atherdon/subscriptions","organizations_url":"https://api.github.com/users/atherdon/orgs","repos_url":"https://api.github.com/users/atherdon/repos","events_url":"https://api.github.com/users/atherdon/events{/privacy}","received_events_url":"https://api.github.com/users/atherdon/received_events","type":"User","site_admin":false},"labels":[{"id":1009680947,"node_id":"MDU6TGFiZWwxMDA5NjgwOTQ3","url":"https://api.github.com/repos/GroceriStar/playing-with-graphql/labels/in%20process","name":"in process","color":"fcbdcd","default":false}],"state":"open","locked":false,"assignee":{"login":"darrylberonque","id":28679553,"node_id":"MDQ6VXNlcjI4Njc5NTUz","avatar_url":"https://avatars3.githubusercontent.com/u/28679553?v=4","gravatar_id":"","url":"https://api.github.com/users/darrylberonque","html_url":"https://github.com/darrylberonque","followers_url":"https://api.github.com/users/darrylberonque/followers","following_url":"https://api.github.com/users/darrylberonque/following{/other_user}","gists_url":"https://api.github.com/users/darrylberonque/gists{/gist_id}","starred_url":"https://api.github.com/users/darrylberonque/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darrylberonque/subscriptions","organizations_url":"https://api.github.com/users/darrylberonque/orgs","repos_url":"https://api.github.com/users/darrylberonque/repos","events_url":"https://api.github.com/users/darrylberonque/events{/privacy}","received_events_url":"https://api.github.com/users/darrylberonque/received_events","type":"User","site_admin":false},"assignees":[{"login":"darrylberonque","id":28679553,"node_id":"MDQ6VXNlcjI4Njc5NTUz","avatar_url":"https://avatars3.githubusercontent.com/u/28679553?v=4","gravatar_id":"","url":"https://api.github.com/users/darrylberonque","html_url":"https://github.com/darrylberonque","followers_url":"https://api.github.com/users/darrylberonque/followers","following_url":"https://api.github.com/users/darrylberonque/following{/other_user}","gists_url":"https://api.github.com/users/darrylberonque/gists{/gist_id}","starred_url":"https://api.github.com/users/darrylberonque/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darrylberonque/subscriptions","organizations_url":"https://api.github.com/users/darrylberonque/orgs","repos_url":"https://api.github.com/users/darrylberonque/repos","events_url":"https://api.github.com/users/darrylberonque/events{/privacy}","received_events_url":"https://api.github.com/users/darrylberonque/received_events","type":"User","site_admin":false}],"milestone":null,"comments":1,"created_at":"2018-07-20T06:27:12Z","updated_at":"2018-07-31T02:35:04Z","closed_at":null,"author_association":"MEMBER","body":"https://github.com/GroceriStar/playing-with-graphql/invitations\r\n\r\nPlease start by reading the documentation, related to GraphQL: https://www.howtographql.com/\r\nAfter reading each chapter - please briefly explain to me here what did you learn from it.\r\nFormat(example):\r\n\r\n#### Chapter 1: Intro (https://graphql.org/learn/)\r\n\"It's covering the basics of graphql\"\r\nQuestions: \"How i can run it at my local PC\"?\r\n\r\n----\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/GroceriStar/playing-with-graphql/issues/comments/409074510","html_url":"https://github.com/GroceriStar/playing-with-graphql/issues/16#issuecomment-409074510","issue_url":"https://api.github.com/repos/GroceriStar/playing-with-graphql/issues/16","id":409074510,"node_id":"MDEyOklzc3VlQ29tbWVudDQwOTA3NDUxMA==","user":{"login":"darrylberonque","id":28679553,"node_id":"MDQ6VXNlcjI4Njc5NTUz","avatar_url":"https://avatars3.githubusercontent.com/u/28679553?v=4","gravatar_id":"","url":"https://api.github.com/users/darrylberonque","html_url":"https://github.com/darrylberonque","followers_url":"https://api.github.com/users/darrylberonque/followers","following_url":"https://api.github.com/users/darrylberonque/following{/other_user}","gists_url":"https://api.github.com/users/darrylberonque/gists{/gist_id}","starred_url":"https://api.github.com/users/darrylberonque/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darrylberonque/subscriptions","organizations_url":"https://api.github.com/users/darrylberonque/orgs","repos_url":"https://api.github.com/users/darrylberonque/repos","events_url":"https://api.github.com/users/darrylberonque/events{/privacy}","received_events_url":"https://api.github.com/users/darrylberonque/received_events","type":"User","site_admin":false},"created_at":"2018-07-31T02:35:04Z","updated_at":"2018-07-31T02:35:04Z","author_association":"COLLABORATOR","body":"Hi, \r\n\r\nHere are the notes I have been taking for the different chapters in the basic lesson. I learned a lot about GraphQL. Specifically, what GraphQL is, the types of operations (queries, mutations, and subscriptions) that are used, how the schema is structured, and the processes that occur in the background to properly process client requests to the server and GraphQL. \r\n\r\nGraphQL Chapters:\r\n\r\n\r\nChapter One: Introduction\r\n\r\nGraphQL is a server side service that allows a more efficient way to request data from the server or database. \r\nIt is an alternative for the use of REST API to for some data on the backend and database. \r\nIt uses queries with specific fields to request for information and the server checks queries against schemas before performing a function to send back the requested information back to the client.\r\n\r\nChapter Two: Queries and Mutations\r\n\r\nQueries can be organized by objects and specific fields of that object to request for specific information\r\nQueries can contain arguments to ask for information at a specific index or place (i.e. hero (id : 1000) or hero (last : 1))\r\nSeparate queries can be made unique using aliases as their object field names. \r\nUsing aliases allows for multiple queries that may be requesting the same type of information.\r\nThe use of fragments is useful in defining types of queries so that you can use the “…fragmentName\" format to implement similar types of queries.\r\nOperation types and names are used to identify types of operations (query, mutation, and subscription) and to name specific operations so that they are identifiable within the code and during debugging.\r\nThe use of variables are important when the user of the client application can have different options to choose. \r\nWhen using variables you can force a non-null selection (using !) and also pick default values to use as an input for the operation.\r\nIn certain situations a directive can be useful should a certain boolean be true or false. \r\nThere are two types of directives: @include which includes a variable parameter in the operation should a certain value be true and @skip which skips a variable parameter in the operation should a certain value be true.\r\nMutations help clients write into the database and update any information using the mutation operation. \r\nIn-line fragments allow clients to access different types of data that depend on the input parameter for an operation. \r\n\r\nChapter Three: Schemas and Types\r\n\r\nSchemas are created to determine what type of data can be asked from the server\r\nObject types can be defined using the type keyword and with each object type, fields can be added in to determine what type of information each object the client can withdraw from that type of object.\r\nUsing ! can force a type to be non-nullable\r\nEach field can take in zero or multiple arguments and can have set default values for each argument if the arguments are not required. \r\nThere are query and mutation types that are defined within the schema\r\nQuery and mutation types describe the types of queries and mutations a client can perform on the Graph QL interface.\r\nThey often contain the object types with any necessary argument parameters.\r\nScalar types are the leaves of the schema tree\r\nThe five main scalar types in GraphQL include strings, ints, floats, booleans, and ID.\r\nEnum types can be used to map a certain type to select values \r\nNon-null modifiers can be applied to specific types such as String and Arrays to force certain types of inputs\r\nInterfaces are used to define an object’s fields and it is useful to diversify different object types who might root from the same interface.\r\nA union type is similar to interfaces but without the requirement of fields. It defines a set of object types that can be returned for a certain query\r\nInput types can be objects with fields that GraphQL can expect from the client request. You can define input type objects by using the type keyword.\r\n\r\nChapter Four: Validation\r\n\r\nGraph QL’s type system makes it easier to detect any invalid queries and allows for the developer to receive any errors on invalid queries.\r\nOne example of an invalid query is call to a fragment within a fragment.\r\nAnother common invalid query is requesting for a field of an object type that doesn’t exist.\r\nThe previous example can apply to scalar types as well as they are the leaves of a schema and would not contain any accessible fields.\r\nAnother invalid query is the misuse of fragments to access a root object type \r\n\r\nChapter Five: Execution\r\n\r\nDuring execution of operations, functions called resolvers are called for each field\r\nEach function calls for the next resolver for the next field until the leaves are reached (scalar types).\r\nA resolver function contains four arguments:\r\nobj: previous object\r\nargs: parameters provided by client\r\ncontext: a value that corresponds to contextual info\r\ninfo: field information\r\nResolvers use a promise for asynchronous calls to the database\r\nTo return field information, resolvers simply access the fields of the obj referenced from the previous object and returns them\r\nScalar coercion occurs when GraphQL internally defines enum type object fields as numbers but will display them with their appropriate enum values\r\nWith lists, GraphQL uses a list of promises and waits until all promises are completed before moving on\r\nDuring each resolved function, it is placed in a key-value map to appropriately display the information to the client\r\n\r\n\r\nChapter Six: Introspection\r\n\r\nGraphQL’s introspection system uses __ to differentiate scalar and object types from the types part of the system\r\nThe introspection system is valuable in determining the fields present for each object type using the following types: __ schema, __ type, __ typekind, __field, __ inputvalue, __ enumvalue, __ directive.\r\nTogether these types organize the way the operations interact with the schema and its different object and scalar types. "}}
{"actor":{"display_login":"darrylberonque"}}