Я пишу функцию, в которой одним из параметров является INT и день недели текущего дня. Если день воскресенье, это будет 1, а понедельник будет 2, и т. Д. c.
Внутри моей базы данных есть таблица для каждого элемента в листе заказа. У них много столбцов, и 7 из них - это воскресенье, понедельник, вторник и т. Д. c. Они имеют логическое значение, если предмет можно купить в данный день.
Так что мне нужно взять INT или 1 или что-то еще и выяснить, какой это день недели. Затем сравните его с столбцом isSunday или любым другим, чтобы увидеть, является ли значение истинным. Если это так, он вернет всю строку для этого элемента. Если значение равно 0 для данного дня, он не вернет этот элемент.
PS Еще один параметр, который я получаю, это время суток. Это определяет, находится ли время между временем начала и окончания, потому что некоторые предметы продаются только утром, например, на завтрак.
Я думал, что вместо того, чтобы получать 2 разных параметра для дня недели INT и времени дня TIME, я просто получил одно большое значение календаря, в котором были дата и время. А затем разбить его, чтобы сравнить его с колонками, но я не знаю, если это делает его слишком сложным.
это схема
getLocationLiveMenu(p_locationID: Int!, p_timeofday: time, p_dayofweek: int): [LocationMenu]
[LocationMenu]
она будет храниться здесь. массив в массиве.
type LocationMenu {
locationID: Int
menucategoryID: Int
name: String
menuItems: [LocationMenuItem]
}
type LocationMenuItem {
locationMenuItemID: Int
locationID: Int
name: String
description: String
price: Float
photo: String
}
этот livemenuget должен быть одной функцией. 2 раздельные недопустимы
это вызов хранимой процедуры на сервере sql, которую я также должен создать
SELECT s.startTime, s.endTime, s.description, s.locationID, s.onSunday, s.onMonday, s.onTuesday, s.onWednesday, s.onThursday, s.onFriday, s.onSaturday, l.locationMenuItemID, l.menuCategoryID, l.name, l.description, l.price, l.photo, l.isAllDay, l.scheduleID
FROM company.menuschedules s left join company.locationmenuitem l on l.locationID = s.locationID where p_locationID = l.locationID and p_currentTime BETWEEN s.startTime AND s.endTime
and if(
p_weekday = 1
then check isMonday
or if p_weekday = 2
then check isTuesday
...
...
)
if booleanvalue = true then return locationmenuitem
;