Wren
Wren is the API layer between external client libraries, and Compute. It also manages table schema and metadata.
Building
Notes
- To manage dependences, wren uses go-modules.
- The
go.mod
file is defined in the root wren folder.
- To generate gRPC/protobuf libraries, wren uses Buf
- The
buf.gen.yaml
files are defined in the root proto folder
Building Wren
Note that building wren currently requires docker. Docker is used for generating code for gRPC
via buf
.
make proto/generate
- writes the output to
gen/
-- all the files execpt those that match the pattern *.ent.go
are dyamically generated. do not commit them to the repo.
make ent/generate
- writes the output to
ent/
-- all the files except those in ent/schema/
and ent/generate.go
are dyamically generated. do not commit them to the repo.
make wren/build
- generates the wren executable
Testing Wren
Generating Mocks
Adding
To add mocks for additional interfaces in wren, update the .mockery.yaml
file and then run make wren/generate-mocks
from the root folder of the monorepo.
Updating
To update the existing mocks for recent interface changes, run make wren/generate-mocks
from the from the root folder of the monorepo.
Running Unit Tests
From the root of the monorepo, run make wren/test
Standards
The following standards are used in the design of the Wren API:
- For gRPC/protobuf:
- For REST:
- For protobuf linting / compiling / documentation: buf
- For the REST reverse-proxy & documentation: grpc-gateway
- For gRPC/protobuf documentation, one of the following (to be decided):
Helpful Links/Repos