...

Source file src/go.einride.tech/aip/examples/examplelibrary/storage.go

Documentation: go.einride.tech/aip/examples/examplelibrary

     1  package examplelibrary
     2  
     3  import (
     4  	"context"
     5  
     6  	"google.golang.org/genproto/googleapis/example/library/v1"
     7  )
     8  
     9  type Storage struct {
    10  	Shelves []*library.Shelf
    11  }
    12  
    13  type ListShelvesQuery struct {
    14  	Offset   int64
    15  	PageSize int32
    16  }
    17  
    18  type ListShelvesResult struct {
    19  	Shelves     []*library.Shelf
    20  	HasNextPage bool
    21  }
    22  
    23  func (s *Storage) ListShelves(_ context.Context, query *ListShelvesQuery) (*ListShelvesResult, error) {
    24  	pageStart := int(query.Offset)
    25  	pageEnd := pageStart + int(query.PageSize)
    26  	switch {
    27  	case pageStart >= len(s.Shelves):
    28  		return &ListShelvesResult{
    29  			Shelves:     nil,
    30  			HasNextPage: false,
    31  		}, nil
    32  	case pageEnd > len(s.Shelves):
    33  		return &ListShelvesResult{
    34  			Shelves:     s.Shelves[pageStart:],
    35  			HasNextPage: false,
    36  		}, nil
    37  	default:
    38  		return &ListShelvesResult{
    39  			Shelves:     s.Shelves[pageStart:pageEnd],
    40  			HasNextPage: true,
    41  		}, nil
    42  	}
    43  }
    44  

View as plain text