laisky_blog_graphql

package module
v0.4.4 Latest Latest
Warning

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

Go to latest
Published: Jun 24, 2019 License: MIT Imports: 23 Imported by: 0

README

laisky-blog-graphql

graphql backend for laisky-blog depends on gqlgen & gin.

Commitizen friendly Go Report Card GoDoc Build Status codecov

Example: https://app.laisky.com/graphql/ui/

介绍: https://blog.laisky.com/p/gqlgen/

Run:

go run -race entrypoints/main.go \
    --debug --addr=127.0.0.1:8080 \
    --dbaddr=127.0.0.1:27017 \
    --config=./docs

Build:

docker build . -t ppcelery/laisky-blog-graphql:0.3.1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AllSortOrder = []SortOrder{
	SortOrderAsc,
	SortOrderDesc,
}

Functions

func DialDB

func DialDB(addr string)

func LoggerMiddleware added in v0.1.4

func LoggerMiddleware(ctx *gin.Context)

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

func RunServer

func RunServer(addr string)

Types

type BlogPostResolver added in v0.2.1

type BlogPostResolver interface {
	Author(ctx context.Context, obj *blog.Post) (*blog.User, error)
	CreatedAt(ctx context.Context, obj *blog.Post) (string, error)
	ModifiedAt(ctx context.Context, obj *blog.Post) (string, error)

	Category(ctx context.Context, obj *blog.Post) (*blog.Category, error)
}

type BlogUserResolver added in v0.2.1

type BlogUserResolver interface {
	ID(ctx context.Context, obj *blog.User) (string, error)
}

type ComplexityRoot

type ComplexityRoot struct {
	BlogCategory struct {
		Name func(childComplexity int) int
		URL  func(childComplexity int) int
	}

	BlogPost struct {
		Author     func(childComplexity int) int
		Category   func(childComplexity int) int
		Content    func(childComplexity int) int
		CreatedAt  func(childComplexity int) int
		Markdown   func(childComplexity int) int
		ModifiedAt func(childComplexity int) int
		Name       func(childComplexity int) int
		Tags       func(childComplexity int) int
		Title      func(childComplexity int) int
		Type       func(childComplexity int) int
	}

	BlogUser struct {
		ID       func(childComplexity int) int
		Username func(childComplexity int) int
	}

	Mutation struct {
		AmendBlogPost  func(childComplexity int, name string, title string, markdown string, typeArg string) int
		CreateBlogPost func(childComplexity int, post NewBlogPost) int
		Login          func(childComplexity int, account string, password string) int
	}

	Query struct {
		Benchmark func(childComplexity int) int
		Posts     func(childComplexity int, page *Pagination, tag string, category string, length int, name string, regexp string) int
		Tweets    func(childComplexity int, page *Pagination, username string, sort *Sort, topic string, regexp string) int
	}

	Tweet struct {
		CreatedAt      func(childComplexity int) int
		ID             func(childComplexity int) int
		IsRetweeted    func(childComplexity int) int
		ReplyTo        func(childComplexity int) int
		RetweetedTweet func(childComplexity int) int
		Text           func(childComplexity int) int
		Topics         func(childComplexity int) int
		URL            func(childComplexity int) int
		User           func(childComplexity int) int
	}

	TwitterUser struct {
		Description func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
		ScreenName  func(childComplexity int) int
	}
}

type Config

type Config struct {
	Resolvers  ResolverRoot
	Directives DirectiveRoot
	Complexity ComplexityRoot
}

type DirectiveRoot

type DirectiveRoot struct {
}

type MutationResolver added in v0.3.0

type MutationResolver interface {
	CreateBlogPost(ctx context.Context, post NewBlogPost) (*blog.Post, error)
	Login(ctx context.Context, account string, password string) (*blog.User, error)
	AmendBlogPost(ctx context.Context, name string, title string, markdown string, typeArg string) (*blog.Post, error)
}

type NewBlogPost added in v0.3.0

type NewBlogPost struct {
	Name     string `json:"name"`
	Title    string `json:"title"`
	Markdown string `json:"markdown"`
	Type     string `json:"type"`
}

type Pagination

type Pagination struct {
	Page int `json:"page"`
	Size int `json:"size"`
}

type QueryResolver

type QueryResolver interface {
	Benchmark(ctx context.Context) (string, error)
	Tweets(ctx context.Context, page *Pagination, username string, sort *Sort, topic string, regexp string) ([]*twitter.Tweet, error)
	Posts(ctx context.Context, page *Pagination, tag string, category string, length int, name string, regexp string) ([]*blog.Post, error)
}

type Resolver

type Resolver struct{}

func (*Resolver) BlogPost added in v0.2.1

func (r *Resolver) BlogPost() BlogPostResolver

func (*Resolver) BlogUser added in v0.2.1

func (r *Resolver) BlogUser() BlogUserResolver

func (*Resolver) Mutation added in v0.3.0

func (r *Resolver) Mutation() MutationResolver

func (*Resolver) Query

func (r *Resolver) Query() QueryResolver

func (*Resolver) Tweet

func (r *Resolver) Tweet() TweetResolver

func (*Resolver) TwitterUser

func (r *Resolver) TwitterUser() TwitterUserResolver

type ResolverRoot

type ResolverRoot interface {
	BlogPost() BlogPostResolver
	BlogUser() BlogUserResolver
	Mutation() MutationResolver
	Query() QueryResolver
	Tweet() TweetResolver
	TwitterUser() TwitterUserResolver
}

type Sort added in v0.4.3

type Sort struct {
	SortBy string    `json:"sort_by"`
	Order  SortOrder `json:"order"`
}

type SortOrder added in v0.4.3

type SortOrder string
const (
	SortOrderAsc  SortOrder = "ASC"
	SortOrderDesc SortOrder = "DESC"
)

func (SortOrder) IsValid added in v0.4.3

func (e SortOrder) IsValid() bool

func (SortOrder) MarshalGQL added in v0.4.3

func (e SortOrder) MarshalGQL(w io.Writer)

func (SortOrder) String added in v0.4.3

func (e SortOrder) String() string

func (*SortOrder) UnmarshalGQL added in v0.4.3

func (e *SortOrder) UnmarshalGQL(v interface{}) error

type TweetResolver

type TweetResolver interface {
	CreatedAt(ctx context.Context, obj *twitter.Tweet) (string, error)

	ReplyTo(ctx context.Context, obj *twitter.Tweet) (*twitter.Tweet, error)

	URL(ctx context.Context, obj *twitter.Tweet) (string, error)
}

type TwitterUserResolver

type TwitterUserResolver interface {
	Description(ctx context.Context, obj *twitter.User) (*string, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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