Warning
THIS IS A WORK IN PROGRESS. The API is not stable and may change at any time. DO NOT USE IN PRODUCTION.
- golang >= 1.22 (for compiling)
- PostgreSQL >= 11.0 (for running)
- Valkey (opensource redis)
Copy config.yml.example
to config.yml
and edit it to your liking.
openssl genrsa -out jwt.key 4096
openssl rsa -in jwt.key -pubout -out jwt.pub
openssl genrsa -out refresh_jwt.key 4096
openssl rsa -in refresh_jwt.key -pubout -out refresh_jwt.pub
Add the following to config.yml
:
jwt:
signing_method: "RS256"
signing_key: /path/to/jwt.key
public_key: /path/to/jwt.pub
refresh_signing_key: /path/to/refresh_jwt.key
refresh_public_key: /path/to/refresh_jwt.pub
The JWKS can be downloaded from <site>/.well-known/jwks.json
.
make build
Running the service:
bin/cservice-api -config </path/to/config.yml>
This project uses sqlc to generate Go code from SQL queries.
The database schema is defined in db/migrations/*.sql
. Do NOT modify existing
migration files if a schema change is necessary. Instead, run the following command:
migrate create -ext sql -dir db/migrations <migration_name>
This will create two new migration files in db/migrations
with the current timestamp
for migrating up and down. Edit the files to add the necessary SQL statements.
To generate the Go code from the migrations in db/migrations
and the SQL queries
defined in db/query/*.sql
, run:
make generate-sqlc
After this, you may have to update the service.go
file in models
so that it
matches the interface defined in models/querier.go
.
After changing the SQL queries or schema it may be necessary to update the database mocks for the unit tests by running:
make generate-mocks
To run the unit tests, run:
make test
The integration tests use dockertest. To run the integration tests, run:
make integration-test
To run the service with live reloading, run:
make watch