- Provides REST and GRPC interfaces
- Uses PostgreSQL as database
REST schema is declared in api.yaml
and GRPC go client is defined in client
folder.
To regenerate golang GRPC code use the following command (You need protoc installed):
protoc --go_out=internal/transport/grpc_handler --go_opt=paths=source_relative --go-grpc_out=internal/transport/grpc_handler --go-grpc_opt=paths=source_relative todo.proto
specify following variables in .env:
- DB_USER (PostgreSQL user)
- DB_PASS (PostgreSQL password)
- HTTP_ADRESS (adress on which REST API will be available)
- GRPC_ADRESS (adress on which GRPC API will be available)
.env example:
DB_USER=user
DB_PASS=password
HTTP_ADRESS=127.0.0.1:8080
GRPC_ADRESS=127.0.0.1:8081
Then run with docker compose up
Well done. Now try to use the REST api using swagger and api.yaml
schema. Or try to use GRPC client (example of usage in client folder)
- specify DB_CONNECTION_STRING key in .env file
- specify HTTP_ADRESS key in .env file (IP adress and port on which your HTTP service will be available)
- specify GRPC_ADRESS key in .env file (IP adress and port on which your GRPC service will be available)
- install migrate
- create tables in your db by running
migrate -database postgres://{DB_CONNECTION_STRING} -path migrations up
(insert DB_CONNECTION_STRING value here) - run using
go run main.go
.env example:
HTTP_ADRESS=127.0.0.1:8080
GRPC_ADRESS=127.0.0.1:8081
DB_CONNECTION_STRING=user:password@tcp(host:port)/dbname
Create migration:
ansible-playbook playbook.yml -e "migration_name=migration_name" --tags create_migration
Make migration:
ansible-playbook playbook.yml --tags run_migration