2020-04-27 01:14:54 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								DROP   VIEW   chores_current ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CREATE   VIEW   chores_current 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SELECT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 x . chore_id , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 x . last_tracked_time , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 CASE   WHEN   x . rollover   =   1   AND   DATETIME ( ' now ' ,   ' localtime ' )   >   x . next_estimated_execution_time   THEN 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 DATETIME ( STRFTIME ( ' %Y-%m-%d ' ,   DATETIME ( ' now ' ,   ' localtime ' ) )   | |   '   '   | |   STRFTIME ( ' %H:%M:%S ' ,   x . next_estimated_execution_time ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 ELSE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 x . next_estimated_execution_time 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 END   AS   next_estimated_execution_time , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 x . track_date_only , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 x . next_execution_assigned_to_user_id 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FROM   ( 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SELECT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 h . id   AS   chore_id , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 MAX ( l . tracked_time )   AS   last_tracked_time , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 CASE   h . period_type 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 WHEN   ' manually '   THEN   ' 2999-12-31 23:59:59 ' 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 WHEN   ' dynamic-regular '   THEN   DATETIME ( MAX ( l . tracked_time ) ,   ' + '   | |   CAST ( h . period_days   AS   TEXT )   | |   '  day ' ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 WHEN   ' daily '   THEN   DATETIME ( IFNULL ( MAX ( l . tracked_time ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' + '   | |   CAST ( h . period_interval   AS   TEXT )   | |   '  day ' ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 WHEN   ' weekly '   THEN   ( 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 SELECT   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        		 FROM   ( 
  
						 
					
						
							
								
									
										
										
										
											2020-04-28 02:11:32 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												 SELECT   ' sunday '   AS   day ,   DATETIME ( COALESCE ( ( SELECT   tracked_time   FROM   chores_log   WHERE   chore_id   =   h . id   ORDER   BY   tracked_time   DESC   LIMIT   1 ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' 1 days ' ,   ' + '   | |   CAST ( ( h . period_interval   -   1 )   *   7   AS   TEXT )   | |   '  days ' ,   ' weekday 0 ' )   AS   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 UNION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 SELECT   ' monday '   AS   day ,   DATETIME ( COALESCE ( ( SELECT   tracked_time   FROM   chores_log   WHERE   chore_id   =   h . id   ORDER   BY   tracked_time   DESC   LIMIT   1 ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' 1 days ' ,   ' + '   | |   CAST ( ( h . period_interval   -   1 )   *   7   AS   TEXT )   | |   '  days ' ,   ' weekday 1 ' )   AS   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 UNION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 SELECT   ' tuesday '   AS   day ,   DATETIME ( COALESCE ( ( SELECT   tracked_time   FROM   chores_log   WHERE   chore_id   =   h . id   ORDER   BY   tracked_time   DESC   LIMIT   1 ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' 1 days ' ,   ' + '   | |   CAST ( ( h . period_interval   -   1 )   *   7   AS   TEXT )   | |   '  days ' ,   ' weekday 2 ' )   AS   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 UNION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 SELECT   ' wednesday '   AS   day ,   DATETIME ( COALESCE ( ( SELECT   tracked_time   FROM   chores_log   WHERE   chore_id   =   h . id   ORDER   BY   tracked_time   DESC   LIMIT   1 ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' 1 days ' ,   ' + '   | |   CAST ( ( h . period_interval   -   1 )   *   7   AS   TEXT )   | |   '  days ' ,   ' weekday 3 ' )   AS   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 UNION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 SELECT   ' thursday '   AS   day ,   DATETIME ( COALESCE ( ( SELECT   tracked_time   FROM   chores_log   WHERE   chore_id   =   h . id   ORDER   BY   tracked_time   DESC   LIMIT   1 ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' 1 days ' ,   ' + '   | |   CAST ( ( h . period_interval   -   1 )   *   7   AS   TEXT )   | |   '  days ' ,   ' weekday 4 ' )   AS   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 UNION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 SELECT   ' friday '   AS   day ,   DATETIME ( COALESCE ( ( SELECT   tracked_time   FROM   chores_log   WHERE   chore_id   =   h . id   ORDER   BY   tracked_time   DESC   LIMIT   1 ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' 1 days ' ,   ' + '   | |   CAST ( ( h . period_interval   -   1 )   *   7   AS   TEXT )   | |   '  days ' ,   ' weekday 5 ' )   AS   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 UNION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 SELECT   ' saturday '   AS   day ,   DATETIME ( COALESCE ( ( SELECT   tracked_time   FROM   chores_log   WHERE   chore_id   =   h . id   ORDER   BY   tracked_time   DESC   LIMIT   1 ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' 1 days ' ,   ' + '   | |   CAST ( ( h . period_interval   -   1 )   *   7   AS   TEXT )   | |   '  days ' ,   ' weekday 6 ' )   AS   next 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 ) 
  
						 
					
						
							
								
									
										
										
										
											2020-04-26 17:26:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											 WHERE   INSTR ( period_config ,   day )   >   0 
  
						 
					
						
							
								
									
										
										
										
											2020-04-28 02:11:32 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											 ORDER   BY   next 
  
						 
					
						
							
								
									
										
										
										
											2020-04-27 01:14:54 +10:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											 LIMIT   1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 WHEN   ' monthly '   THEN   DATETIME ( IFNULL ( MAX ( l . tracked_time ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' + '   | |   CAST ( h . period_interval   AS   TEXT )   | |   '  month ' ,   ' start of month ' ,   ' + '   | |   CAST ( h . period_days   -   1   AS   TEXT )   | |   '  day ' ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 WHEN   ' yearly '   THEN   DATETIME ( IFNULL ( MAX ( l . tracked_time ) ,   DATETIME ( ' now ' ,   ' localtime ' ) ) ,   ' + '   | |   CAST ( h . period_interval   AS   TEXT )   | |   '  years ' ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 END   AS   next_estimated_execution_time , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 h . track_date_only , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 h . rollover , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 h . next_execution_assigned_to_user_id 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FROM   chores   h 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LEFT   JOIN   chores_log   l 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 ON   h . id   =   l . chore_id 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 AND   l . undone   =   0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GROUP   BY   h . id ,   h . period_days 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)   x ;