Хочу понять, как сделать хранение данных о заказе в кафе, если товары могут быть удалены.
Например, заказ сохраняется в базе как подобная структура (у нас используется MongoDB).
{
"id": 1,
"name": "Client",
"phone": "79000000000",
"address": "Address",
"comment": "Client comment",
"products": [
{
"id": 1,
"quantity": 1,
"variation_id": 2
},
{
"id": 3,
"quantity": 2
}
]
}
Скажем, при открытии заказа клиента мы просто делаем выборку по id продуктов и выводим информацию. Но что делать, если позиция или ее вариация была удалена (как пример - сезонные меню каждые 3-4 месяца, и так далее). Какие здесь есть практики? Переносить в отдельную коллекцию такие позиции? Но тогда запрос будет выглядеть не таким уж гладким - надо будет искать id товаров, которые не нашлись в активных позициях и запрашивать из другой коллекции...
Я вижу варианты:
1) Либо удаление позиции заменить сменой статуса на Не активна и никуда не удалять, а на сайте фильтровать просто по параметру active: true (например);
2) Либо хранить в информации о заказе и название позиций и их вариаций.
Причем, мне кажется что придется делать смешанный вариант из этих двух, потому что мне же еще нужно как-то хранить цены товаров на момент покупки, плюс примененные скидки, если будут.