church-api/migrations/20250906000001_create_quarterly_orders_table.sql
Benjamin Slingo e206ce3332 Add quarterlies management system with complete CRUD operations
- 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
2025-09-06 16:53:14 -04:00

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();