ql-events icon indicating copy to clipboard operation
ql-events copied to clipboard

Backport changes from wp-graphql-tec fork.

Open justlevine opened this issue 2 years ago • 13 comments

After learning from @craigwilcox and @kidunot89 that this plugin is no longer abandoned, it makes sense to backport the functionality implemented in wp-graphql-tec.

Important notes about the fork:

  • It adds full query schema support for The Events Calendar, Event Tickets, and Event Calendar Pro. Event Tickets Plus support is in progress.
  • It requires a minimum version of WPGraphQL v1.6.8 (released today) for connections to work.
  • The fork is basically a complete rewrite, to adopt best practices from the emerging WPGraphQL ecosystem, to the point that the file structure, namespaces, and even naming conventions are different.
  • I believe the only feature not supported by the fork that is implemented here is Woocommerce Tickets. Due to the use of interfaces/data models/etc, the method employed by ql-events will not work here. Its also likely some GraphQL fields will need to be renamed to prevent WooGraphQL conflicts, since neither plugin is namespacing their fields.
  • I stopped implementing WPUnit tests after talking to @kidunot89 about the backport (it didnt make sense to write them twice). What that means is while the scaffolding for all the fields, connection args, etc are in place, some resolvers will probably need attention.

Here's a list of piecemeal steps that would be required (each would be a separate PR):

  • [ ] Change minimum PHP supported version to 7.4.x
  • [ ] Restructure file and folder hierarchy to mirror WPGraphQL.
  • [ ] Update tooling (composer deps, and configs for phpstan, phpcs, codeception, etc).
  • [ ] Separate functionality into modules that mirror TEC plugins.
  • [ ] Implement Data Loaders, Models, and Resolvers.
  • [ ] Implement GraphQL interfaces
  • [ ] Add new / update existing graphql types and fields.
  • [ ] Implement connections and connection args.

Full disclosure: backporting is a lot of work, and my current priority is adding the missing functionality to wp-graphql-tec that I need for production. Its likely the list of things required to backport will grow.

justlevine avatar Dec 06 '21 23:12 justlevine