From 81f5c3e0af9aa4b81662e0781289189703324986 Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Mon, 3 Feb 2020 21:03:48 +0100 Subject: graphql: use the cache in priority for fast browsing at < 20ms instead of seconds --- graphql/connections/connections.go | 2 +- graphql/connections/edges.go | 25 +++++++++++++++++++++++++ graphql/connections/gen_identity.go | 11 +++++------ graphql/connections/lazy_bug.go | 14 -------------- graphql/connections/lazy_identity.go | 14 -------------- 5 files changed, 31 insertions(+), 35 deletions(-) create mode 100644 graphql/connections/edges.go delete mode 100644 graphql/connections/lazy_bug.go delete mode 100644 graphql/connections/lazy_identity.go (limited to 'graphql/connections') diff --git a/graphql/connections/connections.go b/graphql/connections/connections.go index 82ad2514..0083f8b2 100644 --- a/graphql/connections/connections.go +++ b/graphql/connections/connections.go @@ -1,6 +1,6 @@ //go:generate genny -in=connection_template.go -out=gen_lazy_bug.go gen "Name=LazyBug NodeType=entity.Id EdgeType=LazyBugEdge ConnectionType=models.BugConnection" //go:generate genny -in=connection_template.go -out=gen_lazy_identity.go gen "Name=LazyIdentity NodeType=entity.Id EdgeType=LazyIdentityEdge ConnectionType=models.IdentityConnection" -//go:generate genny -in=connection_template.go -out=gen_identity.go gen "Name=Identity NodeType=identity.Interface EdgeType=models.IdentityEdge ConnectionType=models.IdentityConnection" +//go:generate genny -in=connection_template.go -out=gen_identity.go gen "Name=Identity NodeType=models.IdentityWrapper EdgeType=models.IdentityEdge ConnectionType=models.IdentityConnection" //go:generate genny -in=connection_template.go -out=gen_operation.go gen "Name=Operation NodeType=bug.Operation EdgeType=models.OperationEdge ConnectionType=models.OperationConnection" //go:generate genny -in=connection_template.go -out=gen_comment.go gen "Name=Comment NodeType=bug.Comment EdgeType=models.CommentEdge ConnectionType=models.CommentConnection" //go:generate genny -in=connection_template.go -out=gen_timeline.go gen "Name=TimelineItem NodeType=bug.TimelineItem EdgeType=models.TimelineItemEdge ConnectionType=models.TimelineItemConnection" diff --git a/graphql/connections/edges.go b/graphql/connections/edges.go new file mode 100644 index 00000000..4e37fcd9 --- /dev/null +++ b/graphql/connections/edges.go @@ -0,0 +1,25 @@ +package connections + +import "github.com/MichaelMure/git-bug/entity" + +// LazyBugEdge is a special relay edge used to implement a lazy loading connection +type LazyBugEdge struct { + Id entity.Id + Cursor string +} + +// GetCursor return the cursor of a LazyBugEdge +func (lbe LazyBugEdge) GetCursor() string { + return lbe.Cursor +} + +// LazyIdentityEdge is a special relay edge used to implement a lazy loading connection +type LazyIdentityEdge struct { + Id entity.Id + Cursor string +} + +// GetCursor return the cursor of a LazyIdentityEdge +func (lbe LazyIdentityEdge) GetCursor() string { + return lbe.Cursor +} diff --git a/graphql/connections/gen_identity.go b/graphql/connections/gen_identity.go index b52b6f96..061e8936 100644 --- a/graphql/connections/gen_identity.go +++ b/graphql/connections/gen_identity.go @@ -8,23 +8,22 @@ import ( "fmt" "github.com/MichaelMure/git-bug/graphql/models" - "github.com/MichaelMure/git-bug/identity" ) -// IdentityInterfaceEdgeMaker define a function that take a identity.Interface and an offset and +// ModelsIdentityWrapperEdgeMaker define a function that take a models.IdentityWrapper and an offset and // create an Edge. -type IdentityEdgeMaker func(value identity.Interface, offset int) Edge +type IdentityEdgeMaker func(value models.IdentityWrapper, offset int) Edge // IdentityConMaker define a function that create a models.IdentityConnection type IdentityConMaker func( edges []*models.IdentityEdge, - nodes []identity.Interface, + nodes []models.IdentityWrapper, info *models.PageInfo, totalCount int) (*models.IdentityConnection, error) // IdentityCon will paginate a source according to the input of a relay connection -func IdentityCon(source []identity.Interface, edgeMaker IdentityEdgeMaker, conMaker IdentityConMaker, input models.ConnectionInput) (*models.IdentityConnection, error) { - var nodes []identity.Interface +func IdentityCon(source []models.IdentityWrapper, edgeMaker IdentityEdgeMaker, conMaker IdentityConMaker, input models.ConnectionInput) (*models.IdentityConnection, error) { + var nodes []models.IdentityWrapper var edges []*models.IdentityEdge var cursors []string var pageInfo = &models.PageInfo{} diff --git a/graphql/connections/lazy_bug.go b/graphql/connections/lazy_bug.go deleted file mode 100644 index 00692e8b..00000000 --- a/graphql/connections/lazy_bug.go +++ /dev/null @@ -1,14 +0,0 @@ -package connections - -import "github.com/MichaelMure/git-bug/entity" - -// LazyBugEdge is a special relay edge used to implement a lazy loading connection -type LazyBugEdge struct { - Id entity.Id - Cursor string -} - -// GetCursor return the cursor of a LazyBugEdge -func (lbe LazyBugEdge) GetCursor() string { - return lbe.Cursor -} diff --git a/graphql/connections/lazy_identity.go b/graphql/connections/lazy_identity.go deleted file mode 100644 index 3274dd7e..00000000 --- a/graphql/connections/lazy_identity.go +++ /dev/null @@ -1,14 +0,0 @@ -package connections - -import "github.com/MichaelMure/git-bug/entity" - -// LazyIdentityEdge is a special relay edge used to implement a lazy loading connection -type LazyIdentityEdge struct { - Id entity.Id - Cursor string -} - -// GetCursor return the cursor of a LazyIdentityEdge -func (lbe LazyIdentityEdge) GetCursor() string { - return lbe.Cursor -} -- cgit