Skip to content

Instantly share code, notes, and snippets.

package resolver
// This file will not be regenerated automatically.
//
// It serves as dependency injection for your app, add any dependencies you require here.
import (
"golang-clean-architecture-ent-gqlgen/ent"
"golang-clean-architecture-ent-gqlgen/graph/generated"
"golang-clean-architecture-ent-gqlgen/pkg/adapter/controller"
package datastore
import (
"golang-clean-architecture-ent-gqlgen/config"
"golang-clean-architecture-ent-gqlgen/ent"
"entgo.io/ent/dialect"
"github.com/go-sql-driver/mysql"
)
func (r *queryResolver) User(ctx context.Context, id *int) (*ent.User, error) {
u, err := r.controller.User.Get(ctx, id)
if err != nil {
return nil, err
}
return u, nil
}
// Resolver is a context struct
type Resolver struct {
client *ent.Client
controller controller.Controller
}
// NewSchema creates NewExecutableSchema
func NewSchema(client *ent.Client, controller controller.Controller) graphql.ExecutableSchema {
return generated.NewExecutableSchema(generated.Config{
Resolvers: &Resolver{
package registry
import (
"golang-clean-architecture-ent-gqlgen/pkg/adapter/controller"
"golang-clean-architecture-ent-gqlgen/pkg/adapter/repository"
"golang-clean-architecture-ent-gqlgen/pkg/usecase/usecase"
)
func (r *registry) NewUserController() controller.User {
repo := repository.NewUserRepository(r.client)
package registry
import (
"golang-clean-architecture-ent-gqlgen/ent"
"golang-clean-architecture-ent-gqlgen/pkg/adapter/controller"
)
type registry struct {
client *ent.Client
}
# Where should the resolver implementations go?
resolver:
layout: follow-schema
dir: pkg/adapter/resolver
package: resolver
package repository
import (
"context"
"golang-clean-architecture-ent-gqlgen/ent"
"golang-clean-architecture-ent-gqlgen/ent/user"
"golang-clean-architecture-ent-gqlgen/pkg/entity/model"
usecaseRepository "golang-clean-architecture-ent-gqlgen/pkg/usecase/repository"
)
package controller
import (
"context"
"golang-clean-architecture-ent-gqlgen/pkg/entity/model"
"golang-clean-architecture-ent-gqlgen/pkg/usecase/usecase"
)
type user struct {
userUsecase usecase.User
package controller
// Controller holds the controllers for the entire across application
type Controller struct {
User interface{ User }
}