api

package
v0.0.0-...-14137fd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2018 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var InputObjectSegmentType = graphql.NewInputObject(
	graphql.InputObjectConfig{
		Name: "InputObjectSegment",
		Fields: graphql.InputObjectConfigFieldMap{
			"id": &graphql.InputObjectFieldConfig{
				Type: graphql.Int,
			},
			"sheetId": &graphql.InputObjectFieldConfig{
				Type: graphql.Int,
			},
			"label": &graphql.InputObjectFieldConfig{
				Type: graphql.String,
			},
			"content": &graphql.InputObjectFieldConfig{
				Type: graphql.String,
			},
			"createdAt": &graphql.InputObjectFieldConfig{
				Type: graphql.String,
			},
		},
	},
)
View Source
var RootMutation = graphql.NewObject(graphql.ObjectConfig{
	Name: "RootMutation",
	Fields: graphql.Fields{

		"registerUser": &graphql.Field{
			Type:        UserType,
			Description: "Register user",
			Args: graphql.FieldConfigArgument{
				"username": &graphql.ArgumentConfig{
					Type: graphql.String,
				},
				"password": &graphql.ArgumentConfig{
					Type: graphql.String,
				},
			},
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {
				username := params.Args["username"].(string)
				password := params.Args["password"].(string)
				token, err := authentication.RegisterUser(username, password)

				if err != nil {
					return nil, err
				}

				return token, nil
			},
		},
		"loginUser": &graphql.Field{
			Type:        UserType,
			Description: "Login user",
			Args: graphql.FieldConfigArgument{
				"username": &graphql.ArgumentConfig{
					Type: graphql.String,
				},
				"password": &graphql.ArgumentConfig{
					Type: graphql.String,
				},
			},
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {
				username := params.Args["username"].(string)
				password := params.Args["password"].(string)
				token, err := authentication.LoginUser(username, password)

				if err != nil {
					return nil, err
				}

				return token, nil
			},
		},

		"createSheet": &graphql.Field{
			Type:        SheetType,
			Description: "Creates a sheet along with segments and attaches it to a user",
			Args: graphql.FieldConfigArgument{
				"name": &graphql.ArgumentConfig{
					Type: graphql.String,
				},
				"segments": &graphql.ArgumentConfig{
					Type: graphql.NewList(InputObjectSegmentType),
				},
			},
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {
				jwt := params.Context.Value("jwt").(string)
				_, err := server.ValidateJWT(jwt)

				if err != nil {
					return nil, err
				}

				claims, err := server.ParseToken(jwt)

				name, _ := params.Args["name"].(string)
				userID := int(claims["id"].(float64))
				segments, _ := params.Args["segments"].([]interface{})
				sheet, err := sheets.InsertSheet(name, userID, segments)

				if err != nil {
					return nil, err
				}

				return sheet, nil
			},
		},
		"deleteSheet": &graphql.Field{
			Type:        SheetType,
			Description: "Deletes a sheet along with segments",
			Args: graphql.FieldConfigArgument{
				"id": &graphql.ArgumentConfig{
					Type: graphql.Int,
				},
			},
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {
				jwt := params.Context.Value("jwt").(string)
				_, err := server.ValidateJWT(jwt)

				if err != nil {
					return nil, err
				}

				claims, _ := server.ParseToken(jwt)
				userID := int(claims["id"].(float64))
				sheetID := params.Args["id"].(int)
				sheet, error := sheets.DeleteSheet(sheetID, userID)

				if error != nil {
					return nil, error
				}

				return sheet, nil
			},
		},
	},
})
View Source
var RootQuery = graphql.NewObject(graphql.ObjectConfig{
	Name: "RootQuery",
	Fields: graphql.Fields{
		"users": &graphql.Field{
			Type:        graphql.NewList(UserType),
			Description: "Query all users",
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {
				res, err := server.RequireAuth(
					params.Context.Value("jwt").(string),
					users.QueryUsers,
				)

				if err != nil {
					return nil, err
				}

				return res, nil
			},
		},
		"sheet": &graphql.Field{
			Type:        SheetType,
			Description: "Query a sheet via its ID",
			Args: graphql.FieldConfigArgument{
				"id": &graphql.ArgumentConfig{
					Type: graphql.Int,
				},
			},
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {
				_, err := server.ValidateJWT(params.Context.Value("jwt").(string))

				if err != nil {
					return nil, err
				}

				sheetID, _ := params.Args["id"].(int)
				sheet, err := sheets.QuerySheet(sheetID)

				if err != nil {
					return nil, err
				}

				return sheet, nil
			},
		},
		"sheets": &graphql.Field{
			Type:        graphql.NewList(SheetType),
			Description: "Query all sheets",
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {
				res, err := server.RequireAuth(
					params.Context.Value("jwt").(string),
					sheets.QuerySheets,
				)

				if err != nil {
					return nil, err
				}

				return res, err
			},
		},
	},
})
View Source
var SegmentType = graphql.NewObject(graphql.ObjectConfig{
	Name: "Segment",
	Fields: graphql.Fields{
		"id": &graphql.Field{
			Type: graphql.Int,
		},
		"sheetId": &graphql.Field{
			Type: graphql.Int,
		},
		"label": &graphql.Field{
			Type: graphql.String,
		},
		"content": &graphql.Field{
			Type: graphql.String,
		},
		"createdAt": &graphql.Field{
			Type: graphql.String,
		},
	},
})
View Source
var SheetType = graphql.NewObject(graphql.ObjectConfig{
	Name: "Sheet",
	Fields: graphql.Fields{
		"id": &graphql.Field{
			Type: graphql.Int,
		},
		"userId": &graphql.Field{
			Type: graphql.Int,
		},
		"name": &graphql.Field{
			Type: graphql.String,
		},
		"createdAt": &graphql.Field{
			Type: graphql.String,
		},
		"segments": &graphql.Field{
			Type:        graphql.NewList(SegmentType),
			Description: "Query all segments related to a sheet",
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {

				sheetID := params.Source.(model.Sheet).ID
				res, err := segments.QuerySegments(sheetID)

				if err != nil {
					return nil, err
				}

				return res, err
			},
		},
		"user": &graphql.Field{
			Type:        UserType,
			Description: "Query the user related to a sheet",
			Resolve: func(params graphql.ResolveParams) (interface{}, error) {

				userID := params.Source.(model.Sheet).UserID
				res, err := users.QueryUserById(userID)

				if err != nil {
					return nil, err
				}

				return res, err
			},
		},
	},
})
View Source
var UserType = graphql.NewObject(graphql.ObjectConfig{
	Name: "User",
	Fields: graphql.Fields{
		"token": &graphql.Field{
			Type: graphql.String,
		},
		"username": &graphql.Field{
			Type: graphql.String,
		},
		"id": &graphql.Field{
			Type: graphql.Int,
		},
	},
})

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL