Skip to content

ehabterra/rewards

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rewards Microservice

A simple service for managing user points which allows receiving point based on the activity type i.e. add review, invite friend and these points can be spent or shared with other users as well.

Used packages

  • mysql
  • gorm
  • google.golang.org/grpc
  • github.com/kelseyhightower/envconfig

Directory structure

  • bin: contains executable file(s)
  • cmd: server and client main functions
  • docker: contains all docker files
  • internal:
    • api: implement grpc server methods
    • types: include environment struct and action type
    • models: database models (user, activity)
    • pb: generated code from proto using the following command:
      make generate
  • pkg: emtpy reserved for reusable packages
  • proto: contains protobuf files

Run the service

Build and run docker containers using this command:

make up

Migrate database

To run database migration type this on terminal:

make migrate

Stop the service

Stop and remove docker containers using this command:

make down

Test using client application

To run the test client with default parameters:

make client

it should print something like that:

2023/04/01 12:31:02 balance: 219.500000
2023/04/01 12:31:02 successfully shared points: 5.500000
2023/04/01 12:31:02 user points: 214.000000
2023/04/01 12:31:02 recipient points: 66.000000

How to authenticate users (not implemented)

We can use JWT token to authenticate user by adding interceptor function to grpc and get token metadata. This way we can get current user's data.

About

simple grpc microservice to manage user's points

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published