12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package bingomanager
- import (
- "context"
- "errors"
- "math/rand"
- gamelangBingopb "git.alfi.li/gamelang/protobuf/gamelang-bingo"
- "github.com/getlantern/deepcopy"
- )
- type BingoServer struct {
- gamelangBingopb.UnimplementedBingoServiceServer
- bingomanager *BingoManager
- }
- func NewBingoServer(wm *BingoManager) *BingoServer {
- return &BingoServer{bingomanager: wm}
- }
- func (us BingoServer) CreateBingo(ctx context.Context, bingo *gamelangBingopb.Bingo) (*gamelangBingopb.Bingo, error) {
- id := rand.Uint32()
- _, err := us.bingomanager.Create(gamelangBingopb.Bingo{Id: id, Name: bingo.GetName(), Textlist: bingo.GetTextlist(), Options: bingo.GetOptions()})
- if err != nil {
- return &gamelangBingopb.Bingo{}, err
- }
- return bingo, nil
- }
- func (us BingoServer) DeleteBingo(ctx context.Context, bingo *gamelangBingopb.Bingo) (*gamelangBingopb.Bingo, error) {
- us.bingomanager.Remove(bingo.GetName())
- return bingo, nil
- }
- func (us BingoServer) GetBingo(ctx context.Context, bingo *gamelangBingopb.Bingo) (*gamelangBingopb.Bingo, error) {
- bingos := us.bingomanager.List()
- for _, bingoB := range bingos {
- if bingo.GetName() == bingoB.GetName() {
- returnBingo := &gamelangBingopb.Bingo{}
- deepcopy.Copy(bingoB, returnBingo)
- return returnBingo, nil
- }
- }
- return &gamelangBingopb.Bingo{}, errors.New("Bingo not found")
- }
- func (us BingoServer) ListBingo(bingo *gamelangBingopb.Bingo, stream gamelangBingopb.BingoService_ListBingoServer) error {
- bingos := us.bingomanager.List()
- for _, bingo := range bingos {
- stream.Send(&bingo)
- }
- return nil
- }
|