Есть User (id, company:str), Offer (id, company:str), Department (id, name:str), UserDepartment (m2m), OfferDepartment (m2m). Есть сторонний API, где можно забрать много офферов, пагинированных 92 страницы по 30 штук.
Нужно забрать все офферы с локальной базы, смерджить с апишным JSON и выдать пагинированными.
Мне нужно вывести все в порядке [local_perfect_match, api_perfect_match, local_good_match, api_good_match, local_others, api_others]
Важно, что из API офферов должно быть top5.
Для каждого юзера оффер может быть perfect, если
user.company ==
offer.company and у них есть один общий депертамент.
Для каждого юзера оффер может быть good, если только
user.company ==
offer.company.
Я знаю, что нужно проиндексировать строки компании, foreign айдишники. Есть еще идея пихать все api офферы вытягивать каждые 2 часа в локальную другую таблицу и кешировать топ 5 для каждого юзера. Но я не понимаю, как сделать хороший эффективный запрос, чтобы не вытягивать все объекты и нормально пропагинировать SQL'но. Важно соблюдать порядок [local_perfect_match, api_perfect_match, local_good_match, api_good_match, local_others, api_others]