You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: schema.go
    path of file: ./repos/Email-Dashboard/go-api-worker/graphql/relay
    
    the code of the file until where you have to start completion: package relay

import (
	"context"
	"go-api-worker/models"
	"strconv"

	"github.com/graphql-go/graphql"
	"github.com/graphql-go/relay"
)

var noteDefinitions *relay.NodeDefinitions
var notificationType *graphql.Object

// Schema schema of go-api
var Schema graphql.Schema

//Init schama init
func Init() {
	noteDefinitions = relay.NewNodeDefinitions(relay.NodeDefinitionsConfig{
		IDFetcher: func(id string, info graphql.ResolveInfo, ctx context.Context) (interface{}, error) {
			resolvedID := relay.FromGlobalID(id)

			switch resolvedID.Type {
			case "Notification":
				id, _ := strconv.Atoi(resolvedID.ID)
				return models.FindNotificationByID(uint(id)), nil
			default:
				return nil, nil
			}
		},
		TypeResolve: func(p graphql.ResolveTypeParams) *graphql.Object {
			switch p.Value.(type) {
			case *models.Notification:
				return notificationType
			default:
				return nil
			}
		},
	})

	notificationType = graphql.NewObject(graphql.ObjectConfig{
		Name:        "Notification",
		Description: "A notification of email-dashboard",
		Fields: graphql.Fields{
			"id": relay.GlobalIDField("Notification", nil),
			"name": &graphql.Field{
				Type:        graphql.NewNonNull(graphql.String),
				Desc
    
func Init() {
	noteDefinitions = relay.NewNodeDefinitions(relay.NodeDefinitionsConfig{
		IDFetcher: func(id string, info graphql.ResolveInfo, ctx context.Context) (interface{}, error) {
			resolvedID := relay.FromGlobalID(id)

			switch resolvedID.Type {
			case "Notification":
				id, _ := strconv.Atoi(resolvedID.ID)
				return models.FindNotificationByID(uint(id)), nil
			default:
				return nil, nil
			}
		},
		TypeResolve: func(p graphql.ResolveTypeParams) *graphql.Object {
			switch p.Value.(type) {
			case *models.Notification:
				return notificationType
			default:
				return nil
			}
		},
	})

	notificationType = graphql.NewObject(graphql.ObjectConfig{
		Name:        "Notification",
		Description: "A notification of email-dashboard",
		Fields: graphql.Fields{
			"id": relay.GlobalIDField("Notification", nil),
			"name": &graphql.Field{
				Type:        graphql.NewNonNull(graphql.String),
				Description: "the name of the notification",
			},
			"slug": &graphql.Field{
				Type: graphql.NewNonNull(graphql.String),
			},
			"accountId": &graphql.Field{
				Type: graphql.NewNonNull(graphql.Int),
			},
		},
		Interfaces: []*graphql.Interface{
			noteDefinitions.NodeInterface,
		},
	})

	// nfConnDefinition := relay.ConnectionDefinitions(relay.ConnectionConfig{
	// 	Name:     "Notification",
	// 	NodeType: notificationType,
	// })

	rootQuery := graphql.ObjectConfig{
		Name: "Query",
		Fields: graphql.Fields{
			"notification":  CreateNotificationQueray(notificationType),
			"notifications": CreateNotificationsQueray(notificationType),
			"node":          noteDefinitions.NodeField,
		}}

	queryType := graphql.NewObject(rootQuery)

	var err error
	Schema, err = graphql.NewSchema(graphql.SchemaConfig{
		Query: queryType,
	})

	if err != nil {
		panic(err)
	}
}