Giter VIP home page Giter VIP logo

bee-built's People

Contributors

kurbaniec avatar

Watchers

 avatar

bee-built's Issues

Automatic creation of nested data fetchers

Nested data fetchers that only call data loaders could be generated automatically to reduce boilerplate code. If they are generated automatically, one can also not forget to define them.

Example for such data fetchers:

@DgsData(parentType = "Film", field = "studios")
fun filmStudios(dfe: DataFetchingEnvironment): CompletableFuture<List<CompanyDto>?> {
    val dataLoader = dfe.getCompanyDataLoader()
    val film = dfe.getSource<FilmDto>()
    return dataLoader.loadMany(film.studioIds)
}

@DgsData(parentType = "Film", field = "directors")
fun filmDirectors(dfe: DataFetchingEnvironment): CompletableFuture<List<PersonDto>?> {
    val dataLoader = dfe.getPersonDataLoader()
    val film = dfe.getSource<FilmDto>()
    return dataLoader.loadMany(film.directorIds)
}

@DgsData(parentType = "Film", field = "cast")
fun filmCast(dfe: DataFetchingEnvironment): CompletableFuture<List<PersonDto>?> {
    val dataLoader = dfe.getPersonDataLoader()
    val film = dfe.getSource<FilmDto>()
    return dataLoader.loadMany(film.castIds)
}

One could in theory do this at runtime, however this would require an approach heavy reflection usage. In addition, the DGS plugin would not indicate in the schema that a data fetcher is defined.

Restructure project

Streamline project structure of older modules:

  • Consistent naming scheme (bee)
  • Move functional capabilities to module itself (@TransactionalResult should become part of lib.data)
  • Extensions functions should be placed in packages where the name is of the type which is extended
  • AutoConfiguration for Spring Libraries (e.g. EventManager)
  • Bump versions

Also provide some minor improvements for lib.data:

  • Add support for typedSelection which was internally in development but is now nearly finished
  • Add extension dfe.toDataSelection()

Investigate better alternatives to entity graph

Test & prototype implementation with Blaze Persistence instead of Entity Graph

The developers of Blaze Persistence see entity views as a better alternative to JPA 2.1 entity graphs...

  • Test Inheritance

  • Test Updates

  • Test Transactions

    • Query again after update?
    • Insert data after transaction begin?
  • Test Filters

    • Is it possible to add kotlin jdsl?
    • evm.applySetting(setting, cbf.create(...).also { // add jdsl })
  • Codegen Views

    • As Blaze does not allow recursive views generate copies until threshold e.g. 2
    • Analyze schema or DTOs?
    • How to model skip over?
      • Model in schema?
      • How to omit m:n tables in schema?
      • Custom GraphQLEntityViewSupport
  • Codegen Selection

    • Selection should be possible without GraphQL DataFetchingEnvironment!

      • Custom GraphQLEntityViewSupport
    • Remove FullNonRecursiveSelection => Generate Full Simple Selection for every Type

    • Generate Simple Selection DSL

      select(Show.DSL {
      	actors {
      		firstname()
      		lastname()
      		companies {
      			users()
      		}
      	}
      })
  • Generate real data classes instead of bytebuddy proxy

    • See TupleConstructorReflectionInstantiator

Pipeline

Create pipeline with GitHub actions that tests libraries.

Also publish artifacts to Maven Central.

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.