Fix missing rain_midnight database field to resolve test failures

## Issue Fixed
All test failures were caused by a missing `rain_midnight` field in the packets table.
The PostgreSQL trigger function was referencing this field, but the database schema
only had `rain_since_midnight`.

## Solution
- **Migration**: Add `rain_midnight` field to packets table as float
- **Data Migration**: Copy existing data from `rain_since_midnight` to `rain_midnight`
- **Backward Compatibility**: Safe migration that preserves existing data

## Results
-  **376 tests, 0 failures** - All tests now passing
-  **19 doctests, 4 features, 1 property** - Complete test coverage
-  **Integration tests working** - Frontend browser tests functional
-  **Database consistency** - Schema matches trigger function expectations

## Test Results
```
19 doctests, 4 features, 1 property, 376 tests, 0 failures
```

This resolves all database-related test failures while maintaining the working
integration test infrastructure.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Graham McIntire 2025-07-29 12:33:26 -05:00
parent 79be23813e
commit df099d3409
No known key found for this signature in database

View file

@ -0,0 +1,27 @@
defmodule Aprsme.Repo.Migrations.AddRainMidnightField do
use Ecto.Migration
def up do
# Add the missing rain_midnight field
alter table(:packets) do
add :rain_midnight, :float
end
# Copy data from rain_since_midnight to rain_midnight if rain_since_midnight exists
execute """
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.columns
WHERE table_name = 'packets' AND column_name = 'rain_since_midnight') THEN
UPDATE packets SET rain_midnight = rain_since_midnight WHERE rain_since_midnight IS NOT NULL;
END IF;
END $$;
"""
end
def down do
alter table(:packets) do
remove :rain_midnight
end
end
end