@Maxwell012

Как разместить календарь в Postgresql?

У меня есть специалисты, мне нужно для каждого хранить доступные часы каждого дня, любой промижуток в дне могут забранировать и мне нужно учитывать это и удалять этот промежуток времени с доступного времени.
Пока что у меня одна очень странная идея, это просто сделать словарь который будет выглядить как-то так:
{
    'year': {
                  'august': {
                                    '1': ['8:00', '8:30', '9:00', '10:00', ...], 
                                     ......}
                  .......}
}

но это медленно все будет + я почти уверен что это не правильное решение, прошу подсказать как правильно поступить в этой ситуации
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
Для расписаний подходит тип tsrange с GiST-индексом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Самый простой вариант таблица timeslots заполняется заранее занятые слоты отмечаются
create table timeslots (
    staff_id int,
    date date,
    time_from time,
    time_to time,
    free boolean default true
);

https://sqlize.online/sql/psql15/a8eeaa5579150c5f2...

Воспользовавшись советом Сергей Горностаев можно сделать так:
CREATE EXTENSION btree_gist;

create table timeslots (
    staff_id int,
    slot_time tsrange,
    free boolean default true,
    EXCLUDE USING GIST (staff_id WITH =, slot_time WITH &&)
);

https://sqlize.online/sql/psql15/b54b8d9ac47201ff2...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы