50 lines
1.8 KiB
SQL
50 lines
1.8 KiB
SQL
-- Persist actual watering execution runs separately from watering plan configuration.
|
|
|
|
CREATE TABLE IF NOT EXISTS watering_runs (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
plan_id INTEGER REFERENCES watering_plans(id) ON DELETE SET NULL,
|
|
property_id INTEGER NOT NULL REFERENCES properties(id) ON DELETE CASCADE,
|
|
run_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
notes TEXT,
|
|
total_duration_minutes DECIMAL(10,2) DEFAULT 0,
|
|
total_coverage_sqft DECIMAL(12,2) DEFAULT 0,
|
|
total_estimated_gallons DECIMAL(12,2) DEFAULT 0,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS watering_run_points (
|
|
id SERIAL PRIMARY KEY,
|
|
run_id INTEGER NOT NULL REFERENCES watering_runs(id) ON DELETE CASCADE,
|
|
plan_point_id INTEGER REFERENCES watering_plan_points(id) ON DELETE SET NULL,
|
|
sequence INTEGER NOT NULL,
|
|
lat DECIMAL(10,8),
|
|
lng DECIMAL(11,8),
|
|
sprinkler_mount VARCHAR(20),
|
|
sprinkler_head_type VARCHAR(30),
|
|
sprinkler_gpm DECIMAL(8,2),
|
|
sprinkler_throw_feet DECIMAL(8,2),
|
|
sprinkler_degrees INTEGER,
|
|
sprinkler_length_feet DECIMAL(8,2),
|
|
sprinkler_width_feet DECIMAL(8,2),
|
|
coverage_sqft DECIMAL(10,2),
|
|
sprinkler_heading_degrees INTEGER,
|
|
equipment_id INTEGER REFERENCES user_equipment(id) ON DELETE SET NULL,
|
|
equipment_name VARCHAR(255),
|
|
actual_duration_minutes DECIMAL(10,2) DEFAULT 0,
|
|
actual_gpm DECIMAL(8,2),
|
|
estimated_gallons DECIMAL(12,2) DEFAULT 0,
|
|
notes TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_watering_runs_user_date
|
|
ON watering_runs(user_id, run_date DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_watering_runs_property_date
|
|
ON watering_runs(property_id, run_date DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_watering_run_points_run
|
|
ON watering_run_points(run_id);
|