Issue:
[Feature] Add a cargo binary for running diesel migrations locally

### Objective
Add a new binary in the `router` crate that would run migrations locally via cli i.e `cargo run migrations`.

### Context
Currently migrations are managed via the diesel_cli which rely on explicitly providing the database username/password & host,
This is a bit cumbersome when you have to provide the variables over & over again.

```bash
diesel migration --database-url postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME run
```

It would be somewhat easier if we could leverage [`diesel_migrations`](https://docs.rs/diesel_migrations/latest/diesel_migrations/) to read the credentials from config file / env & apply migrations.

(Open to alternative approaches as well for this)

### Outcomes
- A new rust binary that can be used for running local db migrations from file
- Updates to the local setup documentation outlining the usage of this cli tool

Resolution:
<think>
PR Context:
- Title: feat: add `hsdev` binary to run migrations
- Merged: 2024-07-08T17:32:18Z
- Files changed: 5 files
- Commits: 15 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
This PR closes #4589 
Created a new Rust binary in the `crates` directory which automates the Diesel migrations with Postgres. The new tool is a CLI tool that takes a path to a TOML file as an argument along with the name of a TOML table to extract Postgres database credentials from.
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat: add `hsdev` binary to run migrations (#4877)
Co-authored-by: James Motherwell <motherwell.jame
Files to modify:


**crates/hsdev/src/input_file.rs**
  Add:
    - function: pub::read
    - function: pub::postgres_url
    - struct: pub::InputData
    - impl: impl InputData

**crates/hsdev/src/main.rs**
  Add:
    - function: private::main
    - function: pub::get_toml_table
    - function: private::test_input_file
    - function: private::test_given_toml
    - struct: private::Args
    - mod: private::input_file
    - mod: private::tests