All checks were successful
continuous-integration/drone/push Build is passing
65 lines
1.8 KiB
Markdown
65 lines
1.8 KiB
Markdown
# Initial setup
|
|
|
|
## Pre-requisite tools
|
|
|
|
```shell
|
|
go install github.com/a-h/templ/cmd/templ@latest
|
|
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
|
|
go install github.com/swaggo/swag/cmd/swag@latest
|
|
```
|
|
|
|
## Database
|
|
This project now uses [goose](https://github.com/pressly/goose) for DB migrations.
|
|
|
|
Install via `brew install goose` on a mac, or install via golang with command `go install github.com/pressly/goose/v3/cmd/goose@latest`
|
|
|
|
Create a new up/down migration file with this command
|
|
```shell
|
|
goose -dir db/migrations sqlite3 ./db.sqlite3 create init sql
|
|
```
|
|
|
|
```shell
|
|
sqlc generate
|
|
```
|
|
|
|
## HTML templates
|
|
Run `templ generate -path ./components` to generate code based on template files
|
|
|
|
## Documentation
|
|
Run `swag init --exclude "pkg.mod,pkg.build,pkg.tools" -o server/router/docs`
|
|
|
|
#### Settings File
|
|
Configuration now lives in the YAML settings file. By default the service reads
|
|
`/etc/dtms/vctp.yml`, or you can override it with the `-settings` flag.
|
|
|
|
```shell
|
|
vctp -settings /path/to/vctp.yml
|
|
```
|
|
|
|
#### Database Configuration
|
|
By default the app uses SQLite and creates/opens `db.sqlite3`. You can opt into PostgreSQL
|
|
by updating the settings file:
|
|
|
|
- `settings.database_driver`: `sqlite` (default) or `postgres`
|
|
- `settings.database_url`: SQLite file path/DSN or PostgreSQL DSN
|
|
|
|
Examples:
|
|
```yaml
|
|
settings:
|
|
database_driver: sqlite
|
|
database_url: ./db.sqlite3
|
|
|
|
settings:
|
|
database_driver: postgres
|
|
database_url: postgres://user:pass@localhost:5432/vctp?sslmode=disable
|
|
```
|
|
|
|
PostgreSQL migrations live in `db/migrations_postgres`, while SQLite migrations remain in
|
|
`db/migrations`.
|
|
|
|
#### Snapshot Retention
|
|
Hourly and daily snapshot table retention can be configured in the settings file:
|
|
|
|
- `settings.hourly_snapshot_max_age_days` (default: 60)
|
|
- `settings.daily_snapshot_max_age_months` (default: 12)
|