我正在 Ruby on Rails 中构建一个电视连续剧调度应用程序,它根据当前电视上的内容执行某些操作。用户可以创建具有开始和结束日期的系列,并可以为这些系列创建广播。广播可以在三个频道之一上进行,形式为“每周二,频道 2,从 10:00:00 到 14:00:00”。
目前,我用以下列将这些广播存储在 MySQL 中:wday
整数、starts_at
时间ends_at
字段和channel_id
整数。因此,上述广播将存储wday
2、2 channel_id
、starts_at
“10:00:00”和ends_at
“14:00:00”,以及对其所属事件的引用。广播可以“跨越”午夜,因此应用程序应允许以“23:00:00”开始和“02:00:00”结束的广播,即第二天凌晨 2 点。
我在以下两个问题上遇到了一些严重的问题:
在特定频道的特定时间只能安排一次广播。该应用程序需要验证用户输入,并检查是否存在针对特定频道和时间的广播。
该应用程序需要为三个频道中的每一个显示当前显示的广播(如果有)。基本上,对于每个频道,找到一个开始时间 < 当前时间 < 结束时间的广播。显然,这也需要与跨越午夜的广播一起工作。
我完全不确定使用时间字段作为开始/结束时间是否是最佳解决方案。请记住,我需要存储时间值,而不是日期,因为在该系列的持续时间内,每周二都会进行广播。
您将如何存储这些广播,允许验证并允许在特定时间进行查询,允许广播“跨越”午夜?