Merged in feature/scriptclean (pull request #25)
Scripting Clean Up * fixupscripts * addtests
This commit is contained in:
@@ -21,10 +21,48 @@ To find new packages: `https://search.nixos.org/packages`
|
||||
|
||||
For regular usage, please use `task` scripts in order run the most appropriate configuration.
|
||||
|
||||
# Environment Variables
|
||||
## Environment Variables
|
||||
|
||||
When using environment variables, there is a hiearchy that will be respected. (First will override the next)
|
||||
|
||||
1. Within the devbox.json file, a variable added to "env"
|
||||
2. Within the devbox.json file, a variable exported in "init_hook"
|
||||
3. A variable added to .env
|
||||
3. A variable added to .env
|
||||
|
||||
## Testing
|
||||
|
||||
For testing integrations such as queries against a database, or interactions with an SQS queue, this repository employs the use of docker testcontainers.
|
||||
|
||||
`https://testcontainers.com/`
|
||||
|
||||
This enables tests to be fully self-contained, thus allowing allowing tests to be reliable and replicable.
|
||||
|
||||
### Execution
|
||||
|
||||
The simplest way of ensuring the validity of the full project is by running `task fullsuite` when in the devbox shell.
|
||||
|
||||
This will:
|
||||
|
||||
1. Generate the latest version of the specs.
|
||||
2. Run the linting commands.
|
||||
3. Run the unit tests.
|
||||
4. Run the integration tests.
|
||||
|
||||
## Naming Conventions
|
||||
|
||||
**Service** - This term is used internally in order to refer to commands that get deployed as APIs.
|
||||
**Runner** - This term is used internally in order to refer to commands that get deployed as consumers of a queue.
|
||||
|
||||
### Creating a new Service
|
||||
|
||||
1. Add a file named `<service_name>.yml`. The service name is important, as it will be used as a reference throughout the codebase. The service name must be in the format `<functionality>Service`. E.g. queryService, ClientService
|
||||
2. Run `task openapi:generate`. This will generate the following:
|
||||
- A location to implement the server-side functions in `./api/<service_name>/`, as well as generated functions, models and swagger docs.
|
||||
- A location with the client-side code in `./pkg/<service_name>/`
|
||||
3. Implement the controllers in `./api/<service_name>/`
|
||||
4. Create a command in `./cmd/<service_name>/main.go` which creates a new instance from `./internal/api`
|
||||
|
||||
### Creating a new Runner
|
||||
|
||||
1. Implement the controller in `./api/<runner_name>/` which implements the `Controller` interface in `./internal/queue`. The runner name must be in the format `<functionality>Runner`. E.g. queryRunner, csvExportRunner
|
||||
2. Create a command in `./cmd/<runner_name>/main.go` which creates a new instance from `./internal/queue`
|
||||
|
||||
Reference in New Issue
Block a user