Add multi-environment support for database configuration

Introduces separate databases and config files for dev, test, and prod
environments. The application now defaults to production, with --env flag
to specify alternative environments.

Changes:
- Update config.rs to support env-based loading (config.toml -> config.<env>.toml -> config.example.toml)
- Add Env enum (Prod, Dev, Test) with database name mapping
- Add --env flag to CLI commands (defaults to prod)
- Add 'db setup' command to create database and schema
- Split migrations into env-specific database creation and shared schema
- Update .gitignore to track config.example.toml but ignore config.toml and config.<env>.toml files
- Update config.example.toml as a template with placeholder values
- Delete 001_initial_schema.sql, replaced by 002_schema.sql + env-specific files

Config loading order:
  1. config.toml (local override)
  2. config.<env>.toml (environment-specific)
  3. config.example.toml (fallback)

Database names:
  - prod: rusty_petroleum
  - dev:  rusty_petroleum_dev
  - test: rusty_petroleum_test

Usage:
  cargo run -- db setup --env dev       # Setup dev database
  cargo run -- import data.csv --env dev # Import to dev
  cargo run -- db setup                # Setup prod (default)
  cargo run -- import data.csv         # Import to prod (default)
This commit is contained in:
2026-04-02 07:09:06 +02:00
parent 9daa186ff6
commit cd46368f79
11 changed files with 279 additions and 38 deletions

2
migrations/001_dev.sql Normal file
View File

@@ -0,0 +1,2 @@
-- Create development database
CREATE DATABASE IF NOT EXISTS rusty_petroleum_dev;

2
migrations/001_prod.sql Normal file
View File

@@ -0,0 +1,2 @@
-- Create production database
CREATE DATABASE IF NOT EXISTS rusty_petroleum;

2
migrations/001_test.sql Normal file
View File

@@ -0,0 +1,2 @@
-- Create test database
CREATE DATABASE IF NOT EXISTS rusty_petroleum_test;

View File

@@ -1,8 +1,5 @@
-- Initial schema for rusty-petroleum
-- Run this against your MariaDB database before importing data
CREATE DATABASE IF NOT EXISTS rusty_petroleum;
USE rusty_petroleum;
-- Schema for rusty_petroleum
-- Run after creating the database
CREATE TABLE IF NOT EXISTS customers (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,