...

Package examplelibrary

import "go.einride.tech/aip/examples/examplelibrary"
Overview
Index
Examples

Overview ▾

type ListShelvesQuery

type ListShelvesQuery struct {
    Offset   int64
    PageSize int32
}

type ListShelvesResult

type ListShelvesResult struct {
    Shelves     []*library.Shelf
    HasNextPage bool
}

type Server

type Server struct {
    library.UnimplementedLibraryServiceServer
    Storage *Storage
}

func (*Server) ListShelves

func (s *Server) ListShelves(
    ctx context.Context,
    request *library.ListShelvesRequest,
) (*library.ListShelvesResponse, error)

Example

Code:

ctx := context.Background()
server := &Server{
    Storage: &Storage{
        Shelves: []*library.Shelf{
            {Name: "shelves/0001", Theme: "Sci-Fi"},
            {Name: "shelves/0002", Theme: "Horror"},
            {Name: "shelves/0003", Theme: "Romance"},
        },
    },
}
page1, err := server.ListShelves(ctx, &library.ListShelvesRequest{
    PageSize: 2,
})
if err != nil {
    panic(err) // TODO: Handle errors.
}
for _, shelf := range page1.Shelves {
    fmt.Println(shelf.Name, shelf.Theme)
}
fmt.Println("page1.NextPageToken non-empty:", page1.NextPageToken != "")
page2, err := server.ListShelves(ctx, &library.ListShelvesRequest{
    PageSize:  2,
    PageToken: page1.NextPageToken,
})
if err != nil {
    panic(err) // TODO: Handle errors.
}
for _, shelf := range page2.Shelves {
    fmt.Println(shelf.Name, shelf.Theme)
}
fmt.Println("page2.NextPageToken non-empty:", page2.NextPageToken != "")

Output:

shelves/0001 Sci-Fi
shelves/0002 Horror
page1.NextPageToken non-empty: true
shelves/0003 Romance
page2.NextPageToken non-empty: false

type Storage

type Storage struct {
    Shelves []*library.Shelf
}

func (*Storage) ListShelves

func (s *Storage) ListShelves(_ context.Context, query *ListShelvesQuery) (*ListShelvesResult, error)