Skip to content

thylong/rft-backend

Repository files navigation

Example GoDoc License

Typical development workflow consist in the following steps:

  1. Define your API contract with protocol buffers
  2. Define your data model in a new file in pkg/db/migrations and write plain SQL to generate requests in /pkg/db/queries
  3. Generate Go code for your proto & SQL binding with make gen
  4. Write your server implementation in server Go package (including pgtype adaptations)

Requirements

# For MacOS
brew install golang-migrate sqlc bufbuild/buf/buf grpcurl

Quickstart

go install golang.org/x/tools/cmd/gonew@latest
gonew github.com/thylong/gonew-templates/06-grpc-sqlc github.com/example/myapp

gRPCurl Example Queries for EventService

This document provides example grpcurl queries to interact with the EventService defined in the provided Protobuf schema. These examples assume your gRPC server is running locally on port 50051.


1. List All Services

Use grpcurl to list all services available on the server:

grpcurl -plaintext localhost:50051 list

Expected Output:

events.EventService

2. Describe a Service

To describe the EventService, including its RPC methods:

grpcurl -plaintext localhost:50051 describe events.EventService

Expected Output:

events.EventService is a service:
  rpc DeleteEvent ( .events.DeleteEventRequest ) returns ( .events.DeleteEventResponse );
  rpc GetEvent ( .events.GetEventRequest ) returns ( .events.GetEventResponse );
  rpc GetEvents ( .events.GetEventsRequest ) returns ( .events.GetEventsResponse );
  rpc PutEvent ( .events.PutEventRequest ) returns ( .events.PutEventResponse );

3. GetEvents Query

Request a list of events with pagination and search filters:

grpcurl -plaintext -d '{
  "page": 1,
  "page_size": 10,
  "search": "example"
}' localhost:50051 events.EventService/GetEvents

Expected Output:

{
  "events": [
    {
      "event_privacy": "EVENT_PRIVACY_INTERNAL",
      "event_id": "123",
      "name": "Company All-Hands",
      "description": "A company All-Hands",
      "type": "Meeting",
      "department": "HR",
      "regions": ["US"],
      "tags": ["monthly"],
      "start_at": {
        "year": 2025,
        "month": 1,
        "day": 15,
        "hours": 10,
        "minutes": 30,
        "seconds": 0
      }
    }
  ],
  "total_count": 1,
  "page": 1,
  "page_size": 10
}

4. GetEvent Query

Request details for a specific event by event_id:

grpcurl -plaintext -d '{
  "event_id": "123"
}' localhost:50051 events.EventService/GetEvent

Expected Output:

{
  "event": {
    "event_privacy": "EVENT_PRIVACY_INTERNAL",
    "event_id": "123",
    "name": "Company All-Hands",
    "description": "A company All-Hands",
    "type": "Meeting",
    "department": "HR",
    "regions": ["US"],
    "tags": ["monthly"],
    "start_at": {
      "year": 2025,
      "month": 1,
      "day": 15,
      "hours": 10,
      "minutes": 30,
      "seconds": 0
    }
  }
}

5. PutEvent Query

Create or update an event:

grpcurl -plaintext -d '{
  "event_privacy": "EVENT_PRIVACY_INTERNAL",
  "event_id": "123",
  "name": "Team Meeting",
  "description": "A Team meeting",
  "type": "Meeting",
  "department": "Engineering",
  "regions": ["EU"],
  "tags": ["sprint-planning"],
  "start_at": {
    "year": 2025,
    "month": 1,
    "day": 18,
    "hours": 14,
    "minutes": 0,
    "seconds": 0
  }
}' localhost:50051 events.EventService/PutEvent

Expected Output:

{
  "event": {
    "event_privacy": "EVENT_PRIVACY_INTERNAL",
    "event_id": "123",
    "name": "Team Meeting",
    "description": "A Team meeting",
    "type": "Meeting",
    "department": "Engineering",
    "regions": ["EU"],
    "tags": ["sprint-planning"],
    "start_at": {
      "year": 2025,
      "month": 1,
      "day": 18,
      "hours": 14,
      "minutes": 0,
      "seconds": 0
    }
  }
}

6. DeleteEvent Query

Delete an event by event_id:

grpcurl -plaintext -d '{
  "eventID": "123"
}' localhost:50051 events.EventService/DeleteEvent

Expected Output:

{}

Query the health probe

grpcurl -plaintext localhost:50051 grpc.health.v1.Health/Check

Benchmarks

Installation

Features

FAQ

License

Contributing

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published