открываешь табличный процессор (excel/libre calc/google spreadsheet/..) открываешь в соседнем окне документацию по используемой библиотеке/фреймворке/базе данных (или исходники, если документация как обычно не полна), и собираешь строчка за строчкой все виды ошибок в первой колонке... пытаясь объединить однотипные ошибки (например not found везде имеет один смысл, или connection error/file not found для того же sqlite)...
err.code.X === "U1" показать "Пользователь не найден". Вместо вывода err.message try { /* ... */} catch(e) { throw new UserRepoError() }любые проверки можно делать на этом этапе: userRepository.save(user);
const user = userRepository.getById(123);
user.changeFirstname('John2'); // проверяем вход => записываем в User.firstname
userRepository.save(user);Или же вообще ничего не делать, всё равно с базы тебе уникальный объект придёт,
хочется классы, запихни в свойство класса сгенерированные геттеры
const user = userRepository.getById(123); // get user from db, return User
user.changeFirstname('John2'); // validate, write
userRepository.save(user); // update user in db
...