Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pdevito3/peaklimsapisample
🧬 A complex DDD based web API to model the accessioning workflow within a LIMS.
https://github.com/pdevito3/peaklimsapisample
cqrs ddd design-patterns docker domain-driven-design dotnet integration-testing testing unit-testing vertical-slice-architecture web-api
Last synced: about 3 hours ago
JSON representation
🧬 A complex DDD based web API to model the accessioning workflow within a LIMS.
- Host: GitHub
- URL: https://github.com/pdevito3/peaklimsapisample
- Owner: pdevito3
- Created: 2022-10-10T04:03:15.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-08-05T20:55:33.000Z (over 1 year ago)
- Last Synced: 2024-05-02T03:47:10.335Z (6 months ago)
- Topics: cqrs, ddd, design-patterns, docker, domain-driven-design, dotnet, integration-testing, testing, unit-testing, vertical-slice-architecture, web-api
- Language: C#
- Homepage:
- Size: 801 KB
- Stars: 50
- Watchers: 2
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PeakLimsApi
This project was created with [Craftsman](https://github.com/pdevito3/craftsman).
## Getting Started
1. Run `docker-compose up --build` from your `.sln` directory to spin up your database(s) and other supporting
infrastructure depending on your configuration (e.g. RabbitMQ, Keycloak, Jaeger, etc.).
2. If using a Keycloak auth server, you'll need to configure it manually (new realm, client, etc) or use the scaffolded Pulumi setup.
1. [Install the pulumi CLI](https://www.pulumi.com/docs/get-started/)
1. `cd` to your scaffolded Pulumi project
1. Run `pulumi up` to start the scaffolding process
1. Create a new stack by pressing `Enter` when prompted and then typing the name of the stack (e.g. `dev`). Alternatively
you can use the `pulumi stack init` command to make a new stack first.
> Note: The stack name must match the extension on your yaml config file (e.g. `Pulumi.dev.yaml`) would have a stack of `dev`.
1. Select yes to apply the configuration to your local Keycloak instance.
3. If running a BFF:
1. Make sure you have [`yarn` installed](https://yarnpkg.com/getting-started/install)
1. Run the project with `dotnet run` or your IDE### Running Your Project(s)
Once you have your database(s) running, you can run your API(s), BFF, and Auth Servers by using
the `dotnet run` command or running your project(s) from your IDE of choice.### Migrations
Migrations should be applied for you automatically on startup, but if you have any any issues, you can do the following:
1. Make sure you have a migrations in your boundary project (there should be a `Migrations` directory in the project directory).
If there isn't see [Running Migrations](#running-migrations) below.
2. Confirm your environment (`ASPNETCORE_ENVIRONMENT`) is set to `Development` using
`$Env:ASPNETCORE_ENVIRONMENT = "Development"` for powershell or `export ASPNETCORE_ENVIRONMENT=Development` for bash.
3. `cd` to the boundary project root (e.g. `cd RecipeManagement/src/RecipeManagement`)
4. Run your project and your migrations should be applied automatically. Alternatively, you can run `dotnet ef database update` to apply your migrations manually.> You can also stay in the `sln` root and run something like `dotnet ef database update --project RecipeManagement/src/RecipeManagement`
## Running Integration Tests
To run integration tests:1. Ensure that you have docker installed.
2. Go to your src directory for the bounded context that you want to test.
3. Confirm that you have migrations in your infrastructure project. If you need to add them, see the [instructions below](#running-migrations).
4. Run the tests> ⏳ If you don't have the database image pulled down to your machine, they will take some time on the first run.
### Troubleshooting
- If your entity has foreign keys, you might need to adjust some of your tests after scaffolding to accomodate them.## Running Migrations
To create a new migration, make sure your environment is set to `Development`:### Powershell
```powershell
$Env:ASPNETCORE_ENVIRONMENT = "Development"
```### Bash
```bash
export ASPNETCORE_ENVIRONMENT=Development
```Then run the following:
```shell
cd YourBoundedContextName/src/YourBoundedContextName
dotnet ef migrations add "MigrationDescription"
```To apply your migrations to your local db, make sure your database is running in docker run the following:
```bash
cd YourBoundedContextName/src/YourBoundedContextName
dotnet ef database update
```