spreader stuff
This commit is contained in:
56
database/migrations/user_spreader_system.sql
Normal file
56
database/migrations/user_spreader_system.sql
Normal file
@@ -0,0 +1,56 @@
|
||||
-- Update user equipment for better spreader support
|
||||
-- Note: we already have 'manufacturer' and 'model' columns, so let's use those
|
||||
-- Add brand as alias for manufacturer for consistency with new API
|
||||
ALTER TABLE user_equipment
|
||||
ADD COLUMN IF NOT EXISTS brand VARCHAR(100),
|
||||
ADD COLUMN IF NOT EXISTS notes TEXT;
|
||||
|
||||
-- Copy existing manufacturer data to brand field for consistency
|
||||
UPDATE user_equipment SET brand = manufacturer WHERE brand IS NULL AND manufacturer IS NOT NULL;
|
||||
|
||||
-- Create table to store product-specific spreader settings
|
||||
-- This links products to specific spreader settings
|
||||
CREATE TABLE IF NOT EXISTS product_spreader_settings (
|
||||
id SERIAL PRIMARY KEY,
|
||||
product_id INTEGER REFERENCES products(id) ON DELETE CASCADE,
|
||||
user_product_id INTEGER REFERENCES user_products(id) ON DELETE CASCADE,
|
||||
spreader_brand VARCHAR(100) NOT NULL,
|
||||
spreader_model VARCHAR(100),
|
||||
setting_value VARCHAR(20) NOT NULL,
|
||||
rate_description VARCHAR(200), -- e.g., "1 lb nitrogen per 1000 sq ft"
|
||||
notes TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
-- Ensure we have either product_id or user_product_id, but not both
|
||||
CHECK (
|
||||
(product_id IS NOT NULL AND user_product_id IS NULL) OR
|
||||
(product_id IS NULL AND user_product_id IS NOT NULL)
|
||||
)
|
||||
);
|
||||
|
||||
-- Create indexes for better performance
|
||||
CREATE INDEX IF NOT EXISTS idx_product_spreader_settings_product ON product_spreader_settings(product_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_product_spreader_settings_user_product ON product_spreader_settings(user_product_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_product_spreader_settings_brand ON product_spreader_settings(spreader_brand);
|
||||
CREATE INDEX IF NOT EXISTS idx_user_equipment_brand_model ON user_equipment(brand, model);
|
||||
|
||||
-- Add trigger to update updated_at timestamp
|
||||
CREATE OR REPLACE FUNCTION update_product_spreader_settings_updated_at()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = CURRENT_TIMESTAMP;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ language 'plpgsql';
|
||||
|
||||
DROP TRIGGER IF EXISTS update_product_spreader_settings_updated_at_trigger ON product_spreader_settings;
|
||||
CREATE TRIGGER update_product_spreader_settings_updated_at_trigger
|
||||
BEFORE UPDATE ON product_spreader_settings
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE update_product_spreader_settings_updated_at();
|
||||
|
||||
-- Drop the old spreader_settings table since we're using a different approach
|
||||
DROP TABLE IF EXISTS spreader_settings;
|
||||
|
||||
SELECT 'Updated spreader system for user-defined spreaders and product settings!' as migration_status;
|
||||
Reference in New Issue
Block a user