
- New quarterly_orders table with validation and constraints - Full CRUD API endpoints for quarterly orders management - Import functionality for bulk quarterly data from JSON - Python scripts for data migration and database import - Consistent validation for quarterly types and amounts - Follows established DRY/KISS architectural patterns
29 lines
1.1 KiB
PL/PgSQL
29 lines
1.1 KiB
PL/PgSQL
-- Create quarterly_orders table for managing Sabbath School quarterly orders
|
|
CREATE TABLE quarterly_orders (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name VARCHAR(255) NOT NULL,
|
|
quarterly_type VARCHAR(50) NOT NULL CHECK (quarterly_type IN ('Regular', 'Teachers', 'Large Print', 'EG White Notes')),
|
|
amount INTEGER NOT NULL CHECK (amount > 0),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Create index on name for faster searching
|
|
CREATE INDEX idx_quarterly_orders_name ON quarterly_orders(name);
|
|
|
|
-- Create index on quarterly_type for filtering
|
|
CREATE INDEX idx_quarterly_orders_type ON quarterly_orders(quarterly_type);
|
|
|
|
-- Create trigger to automatically update updated_at column
|
|
CREATE OR REPLACE FUNCTION update_quarterly_orders_updated_at()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER trigger_quarterly_orders_updated_at
|
|
BEFORE UPDATE ON quarterly_orders
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_quarterly_orders_updated_at(); |