grpc-crud-demo

command module
v0.0.0-...-302b2cd Latest Latest
Warning

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

Go to latest
Published: May 3, 2020 License: MIT Imports: 9 Imported by: 0

README

CRUD service implemented in gRPC

This is a simple demo of implementing a bookstore service using gRPC framework - see below protobuf file.

How to run the demo

You can run the server by running the following commands:

go run main.go // this will fire up the server

go run client/client.go // this will fire up the client

Service API definition

The api definition is defined in proto file - see below

syntax = "proto3";

package api;

import "google/protobuf/empty.proto";

// A simple Bookstore API.
//
// The API manages shelves and books resources. Shelves contain books.
service Bookstore {
    // Returns a list of all shelves in the bookstore.
    rpc ListShelves(google.protobuf.Empty) returns (ListShelvesResponse) {}
    // Creates a new shelf in the bookstore.
    rpc CreateShelf(CreateShelfRequest) returns (Shelf) {}
    // Returns a specific bookstore shelf.
    rpc GetShelf(GetShelfRequest) returns (Shelf) {}
    // Deletes a shelf, including all books that are stored on the shelf.
    rpc DeleteShelf(DeleteShelfRequest) returns (google.protobuf.Empty) {}
    // Returns a list of books on a shelf.
    rpc ListBooks(ListBooksRequest) returns (ListBooksResponse) {}
    // Creates a new book.
    rpc CreateBook(CreateBookRequest) returns (Book) {}
    // Returns a specific book.
    rpc GetBook(GetBookRequest) returns (Book) {}
    // Deletes a book from a shelf.
    rpc DeleteBook(DeleteBookRequest) returns (google.protobuf.Empty) {}
}

// A shelf resource.
message Shelf {
    // A unique shelf id.
    int64 id = 1;
    // A theme of the shelf (fiction, poetry, etc).
    string theme = 2;
}

// A book resource.
message Book {
    // A unique book id.
    int64 id = 1;
    // An author of the book.
    string author = 2;
    // A book title.
    string title = 3;
}

// Response to ListShelves call.
message ListShelvesResponse {
    // Shelves in the bookstore.
    repeated Shelf shelves = 1;
}

// Request message for CreateShelf method.
message CreateShelfRequest {
    // The shelf resource to create.
    Shelf shelf = 1;
}

// Request message for GetShelf method.
message GetShelfRequest {
    // The ID of the shelf resource to retrieve.
    int64 shelf = 1;
}

// Request message for DeleteShelf method.
message DeleteShelfRequest {
    // The ID of the shelf to delete.
    int64 shelf = 1;
}

// Request message for ListBooks method.
message ListBooksRequest {
    // ID of the shelf which books to list.
    int64 shelf = 1;
}

// Response message to ListBooks method.
message ListBooksResponse {
    // The books on the shelf.
    repeated Book books = 1;
}

// Request message for CreateBook method.
message CreateBookRequest {
    // The ID of the shelf on which to create a book.
    int64 shelf = 1;
    // A book resource to create on the shelf.
    Book book = 2;
}

// Request message for GetBook method.
message GetBookRequest {
    // The ID of the shelf from which to retrieve a book.
    int64 shelf = 1;
    // The ID of the book to retrieve.
    int64 book = 2;
}

// Request message for DeleteBook method.
message DeleteBookRequest {
    // The ID of the shelf from which to delete a book.
    int64 shelf = 1;
    // The ID of the book to delete.
    int64 book = 2;
}

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package main implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package main implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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