         'easter-day', null, null
     );
 
--- 2016:
--- Mass 7:00 AM
--- Mass 8:00 AM
--- Sung Mass 12:10 PM
--- Solemn Mass 6:00 PM
--- 
--- title 2008-2016:
--- Ash Wednesday
--- 
--- title 2004-2007:
--- The First Day of Lent: Ash Wednesday
--- 
--- services 2013-2015:
--- Mass 7:00 AM
--- Mass 8:00 AM
--- Sung Mass 12:10 PM
--- Solemn Mass 6:00 PM
--- 
--- services 2007-2012:
--- Mass 7:00 AM
--- Mass 8:00 AM
--- Noonday Prayer 12:00 PM
--- Sung Mass 12:10 PM
--- Solemn Mass 6:00 PM
--- 
--- services 2004-2006:
--- Said Mass 7:00 AM
--- Said Mass 8:00 AM
--- Sung Mass 12:10 PM
--- Solemn Mass 6:00 PM
--- 
--- notes 2004-2007:
--- Fast & Abstinence 
--- Ashes are offered from 7:00 AM to 8:00 PM.
--- Weekdays in Lent are observed by special acts of discipline and self-denial.
--- Fridays of Lent are observed by abstinence from flesh meats.
--- 
--- notes 2008-2009:
--- Ashes will be offered throughout the day from 7:00 AM to 8:00 PM.
--- 
--- notes 2010:
--- Imposition of Ashes will be offered throughout the day from 7:00 AM to 8:00 PM.
--- 
--- notes 2011-2012:
--- Fast and Abstinence
--- Imposition of Ashes will be offered throughout the day from 7:00 AM to 8:00 PM.
--- 
--- notes 2013-2015:
--- Fast and Abstinence
--- Imposition of Ashes will be offered throughout the day from 7:00 AM to 8:00 PM.
--- The Daily Office is not offered on this day.
--- 
--- notes 2016:
--- Fast and Abstinence
--- Imposition of Ashes will be offered throughout the day from 7:00 AM to 8:00 PM.
--- The Daily Office is not prayed publicly on this day.
+INSERT INTO service_patterns (name, code,
+        schedule_code_mon, schedule_code_mon_with_vigil, schedule_code_mon_vigil,
+        schedule_code_tue, schedule_code_tue_with_vigil, schedule_code_tue_vigil,
+        schedule_code_wed, schedule_code_wed_with_vigil, schedule_code_wed_vigil,
+        schedule_code_thu, schedule_code_thu_with_vigil, schedule_code_thu_vigil,
+        schedule_code_fri, schedule_code_fri_with_vigil, schedule_code_fri_vigil,
+        schedule_code_sat, schedule_code_sat_with_vigil, schedule_code_sat_vigil,
+        schedule_code_sun, schedule_code_sun_with_vigil, schedule_code_sun_vigil
+    ) VALUES ('Ash Wednesday', 'ash-wednesday',
+        null, null, null,
+        null, null, null,
+        'ash-wednesday', null, null,
+        null, null, null,
+        null, null, null,
+        null, null, null,
+        null, null, null
+    );
+
+INSERT INTO service_patterns (name, code,
+        schedule_code_mon, schedule_code_mon_with_vigil, schedule_code_mon_vigil,
+        schedule_code_tue, schedule_code_tue_with_vigil, schedule_code_tue_vigil,
+        schedule_code_wed, schedule_code_wed_with_vigil, schedule_code_wed_vigil,
+        schedule_code_thu, schedule_code_thu_with_vigil, schedule_code_thu_vigil,
+        schedule_code_fri, schedule_code_fri_with_vigil, schedule_code_fri_vigil,
+        schedule_code_sat, schedule_code_sat_with_vigil, schedule_code_sat_vigil,
+        schedule_code_sun, schedule_code_sun_with_vigil, schedule_code_sun_vigil
+    ) VALUES ('Good Friday', 'good-friday',
+        null, null, null,
+        null, null, null,
+        null, null, null,
+        null, null, null,
+        'good-friday', null, null,
+        null, null, null,
+        null, null, null
+    );
 
 --
 -- Define precedence

INSERT INTO schedule_services (schedule_id, service_id) VALUES (47, 50); -- easter-day (oldest)
INSERT INTO schedule_services (schedule_id, service_id) VALUES (47, 13); -- easter-day (oldest)
INSERT INTO schedule_services (schedule_id, service_id) VALUES (47, 52); -- easter-day (oldest)

--
-- Define service patterns for seasons, fixed feasts, and moveable feasts that vary by day of the week

INSERT INTO schedules (name, code, is_default, valid_start) VALUES ('Easter Day', 'easter-day', true, '2014-01-01 00:00:00' AT TIME ZONE 'America/New_York'); -- 45
INSERT INTO schedules (name, code, is_default, valid_start, valid_end) VALUES ('Easter Day', 'easter-day', true, '2008-01-01 00:00:00' AT TIME ZONE 'America/New_York', '2013-12-31 23:59:59' AT TIME ZONE 'America/New_York'); -- 46
INSERT INTO schedules (name, code, is_default, valid_end) VALUES ('Easter Day', 'easter-day', true, '2007-12-31 23:59:59' AT TIME ZONE 'America/New_York'); -- 47
INSERT INTO schedules (name, code, is_default, valid_start) VALUES ('Ash Wednesday', 'ash-wednesday', true, '2013-01-01 00:00:00' AT TIME ZONE 'America/New_York'); -- 48
INSERT INTO schedules (name, code, is_default, valid_start, valid_end) VALUES ('Ash Wednesday', 'ash-wednesday', true, '2007-01-01 00:00:00' AT TIME ZONE 'America/New_York', '2012-12-31 23:59:59' AT TIME ZONE 'America/New_York'); -- 49
INSERT INTO schedules (name, code, is_default, valid_end) VALUES ('Ash Wednesday', 'ash-wednesday', true, '2006-12-31 23:59:59' AT TIME ZONE 'America/New_York'); -- 50

INSERT INTO schedules (name, code, is_default, valid_start) VALUES ('Good Friday', 'good-friday', true, '2015-01-01 00:00:00' AT TIME ZONE 'America/New_York'); -- 51
INSERT INTO schedules (name, code, is_default, valid_start, valid_end) VALUES ('Good Friday', 'good-friday', true, '2011-01-01 00:00:00' AT TIME ZONE 'America/New_York', '2014-12-31 23:59:59' AT TIME ZONE 'America/New_York'); -- 52
INSERT INTO schedules (name, code, is_default, valid_end) VALUES ('Good Friday', 'good-friday', true, '2010-12-31 23:59:59' AT TIME ZONE 'America/New_York'); -- 53

-- TODO: old summer sunday schedule
-- TODO: old weekday schedule (with 6:20 Mass after evening prayer)
