Coder Social home page Coder Social logo

kosmo's People

Stargazers

Nikita Zhenev avatar Roman avatar Aight Bit avatar Hüseyin avatar FW avatar

Watchers

James Cloos avatar FW avatar Hüseyin avatar

kosmo's Issues

Support for "apollo-link-batch-http"

Support apollo-link-batch-http in kosmo. A kosmo Server should resolve all queries that are passed in a Array. It should resolve all queries concurrently to speed up the response.

Add GoDoc badge to README

Now that kosmo is displayable on pkg.go.dev (#13) kosmos README should display a badge that links to it's GoDoc on "pkg.go.dev".

To add this the following badge must be:
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/mod/github.com/FelixWieland/kosmo)

Add GoDoc documentation

To make extending kosmo easier, a GoDoc should be provided. In addition, the README must be expanded to include the new configuration options

Add unit tests

Kosmo is not currently implementing unit tests. To make refactoring easier, the entire library should be covered by unit tests. Goconvey should be used as the testing framework. This should also make learning / using / enhancing kosmo easier

Support resolver without arguments

At the moment a resolver that does not need any arguments has to accept an empty structure as an argument.

In the future, a resolver without arguments should also be supported so that the additional effort to declare a new resolver type is eliminated.

Starting point:

functionArguments := []reflect.Value{createFunctionStructArgumentFromMap(arg, p.Args)}

Parallelize schema reflection

To make the development process more interactive, kosmo needs to speed up his schema reflection.
This could be relatively easy get done by using go routines for each type and resolver reflection.

To avoid deadlocks the used cache implementation must support parallel access.
Starting point:

kosmo/cache.go

Line 24 in 5518e08

func (c *cache) Read(key string, fallback func(setter SetCache)) interface{} {

Before the implementation starts, first check the following concurrency and parallelism rule:
https://github.com/golang/go/wiki/CodeReviewComments#synchronous-functions

and visit popular libraries to check how they implemented parallelism inside a library.

Support multiple queries for a type

Currently kosmo supports only one query per type. To become more flexible, several queries per type should be allowed in the future.

Starting point:

kosmo/kosmo.go

Line 60 in e8b5272

func (t GraphQLSchema) Query(resolverFunction interface{}) GraphQLSchema {

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.