- Go 1.10 Download link
- Protocol buffers Download link
- MySQL
- Check the go version installed.
go version
- Check protobuf installation.
protoc --help
- Setup
SECRET_KEY
environment variable to some string
- Download the repository and
cd
into it.
go get github.com/delta/dalal-street-server
cd $GOPATH/src/github.com/delta/dalal-street-server
- Install dependencies
go get -v ./...
go get -v github.com/gemnasium/migrate
go get -v gopkg.in/jarcoal/httpmock.v1
go get -v github.com/golang/protobuf/proto
go get -v github.com/golang/protobuf/protoc-gen-go
go get -v github.com/sendgrid/sendgrid-go
go get -v github.com/delta/plivo-go
- Setup submodules
git submodule init
git submodule update --recursive
- Create databases and run migrations
mysql -u root -p -e "CREATE DATABASE dalalstreet_dev; CREATE DATABASE dalalstreet_test;"
migrate -url "mysql://root:YOUR_MYSQL_ROOT_PASSWORD@/dalalstreet_dev" -path ./migrations up
- Generate proto files
./build_proto.sh
- Run
cp config.json.example config.json
- Fill in the database credentials in the
Dev
section of config.json. - Run
go run main.go
migrate -url "mysql://root:YOUR_MYSQL_ROOT_PASSWORD@/dalalstreet_dev" -path ./migrations create migration_file_xyz
- Run the test script locally before pushing commits.
./test.sh
- Install docker and docker-compose.
- Run
cp .env.example .env
. Fill in the DB_NAME and DB_PASS in .env. These are the credentials for the database container. - Use the same credentials in
Docker
section config.json (DbName and DbPassword) and docker-entry.sh (in themigrate
command). - Run
docker-compose up
. - Once the containers are up, you can get shell access by using
docker exec -it <CONTAINER_ID> bash
- To generate mock for a file using mockgen, place this comment after import statement
//go:generate mockgen -source {YOUR_FILE_NAME}.go -destination ../mocks/{YOUR_FILE_NAME}.go -package mocks
- To generate mocks for all packages that has above comment
go generate ./...
- To manually generate a mock package
mockgen -destination=mocks/{YOUR_FILE_NAME}.go -package=mocks {PATH_TO_YOUR_FILE}