From c71f24c00d28a1403984917c2fb7d78222eda198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wysoki=C5=84ski?= Date: Sun, 11 Dec 2022 09:51:49 +0100 Subject: [PATCH] chore: update README.md --- README.md | 13 ++++++++++++- docs/migration.png | Bin 0 -> 19456 bytes 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 docs/migration.png diff --git a/README.md b/README.md index f181db4..6d0f2d1 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,9 @@ Prerequisites: 8. **direnv** (optional, but recommended) ```shell +# if you have direnv installed +direnv allow + # install git hooks and required tools make install @@ -46,6 +49,15 @@ go test -v ./... TESTS_DB_DSN=postgres://sessions:sessions_pass@127.0.0.1/sessions go test -v ./... ``` +#### Creating a new database migration + +```shell +# create a migration +go run ./cmd/sessions/main.go db migration create go migration 1 +``` + +![img.png](docs/migration.png) + ## Configuration options Configuration options can be specified via environment variables. @@ -65,7 +77,6 @@ Configuration options can be specified via environment variables. | ``API_CORS_ALLOW_CREDENTIALS`` | ``false`` | Whether requests with credentials are allowed | | ``API_CORS_ALLOWED_METHODS`` | ``HEAD,GET,POST,PUT`` | Comma-separated list of allowed methods | | ``API_CORS_MAX_AGE`` | ``300`` | Max time to cache response (seconds) | -| | | | ## License diff --git a/docs/migration.png b/docs/migration.png new file mode 100644 index 0000000000000000000000000000000000000000..613a70ca573559761127f3d01dde11d389ed6368 GIT binary patch literal 19456 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 Q4F@UlboFyt=akR{08&QThX4Qo literal 0 HcmV?d00001