212 похожих чатов

Приветствую. Подскажите плиз, как грамотнее разруливать кейс появления новых таблиц/сущностей которые

логически привязаны к уже существующим.
Кейс: есть пользователи, уже целая база. Появляется фича оповещений, где есть настройки оповещений для каждого пользователя. Т.е. user_id, is_sms_receive, is_email_receive и прочее.
Получается на момент создания фичи база настроек пуста, а пользователи сами есть. Выходит есть проблемы с чтением, там null а не true/false ( на true/false не акцентируем, вполне могут быть и стоки и to_boolean() - не панацея) , а так же с записью, так как настройки для определенного пользователя not_found.
Какие есть варианты решения проблем? Я просто вижу, что в каждом write экшене создавать настройки пользователя, если их нет, а на чтении ставит дефолтные значения какие то.
Но получается что в каждом экшене будет проверка и создание, какой то болерплейт отчасти, а в разных частях чтения можно записать теоретически разные дефолтные значения, или вообще забыть про эту особенность.
Вариант забить всю таблицу данными на момент создания фичи - требует времени по выполнению и возможны краши пока это выполняется. Или же делать двух этапно: забить базу а потом выложить фичу в пользование?

9 ответов

20 просмотров

мне кажется проще при чтении проставлять дефолтное значение, если той или иной настройки нет в БД

Миграцию накати

Павел-Г. Автор вопроса
Nikolay Underground
Миграцию накати

Миграция это самый простой вариант, но что если уже куча данных и миграция будет выполняться полчаса, час?

Павел Г.
Миграция это самый простой вариант, но что если уж...

ты можешь сначала зарелизить скрипт для заполнения бд данными, запустить его (запомнив ID последнего юзера) потом зарелизить фичу и еще раз запустить скрипт с оффсетом этого ID чтобы дозаполнить тех юзеров, которые появились за время деплоя фичи

Павел Г.
Миграция это самый простой вариант, но что если уж...

Проведи миграцию в самое ненагруженное время и я не думаю что пользователей настолько много что просто insert into … select id, false, false from users будет полтора часа длиться

Павел-Г. Автор вопроса

с uuid возможно посложнее будет, но так да, вариант возможно

Bat
ты можешь сначала зарелизить скрипт для заполнения...

Зачем так сложно, просто начать для новых челов писать настройку а в след деплое добавить where not exists

Похожие вопросы

Обсуждают сегодня

#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Карта сайта