Сохранить конечные 's' для таблицы в Postgraphile
Есть ли способ отключить функцию "удалить множественное число" в Postgraphile?
У меня есть стол OS
в моей базе данных, и я использую очень классную библиотеку Postgraphile, чтобы бесплатно создать интерфейс GraphQL. Все отлично, но Postgraphile обрезает имя моей таблицы, думая, что оно во множественном числе. Итак, я получаю allOs
вместо allOses
а также createO
, updateO
, так далее...
Я старался:
- Добавляя подчеркивание после имени таблицы, а затем оно просто сохраняет всю вещь с подчеркиванием.
- Добавление подчеркивания (
O_S
), а затем во множественном числе есть заглавныеallOS
но единственное числоO_
- Умный комментарий с указанием
E'@name os'
но это все еще опускаетs
- Умный комментарий с указанием
E'@name oss'
который затем правильно множитallOsses
(ха-ха) и держит как для единственного числаoss
PS Если вы увидите этого Benjie/ других авторов, ваша документация будет невероятной, а библиотека сэкономит мне месяцы работы.
1 ответ
Это изменение выполняется инфлектором PostGraphile; однако это не всегда делает это правильно (например, в этом случае), но, к счастью, это можно переопределить с помощью небольшого плагина.
В этом случае, вероятно, лучше добавить конкретные исключения к pluralize
а также singularize
функции; Вы можете сделать это, используя makeAddInflectorsPlugin из нашей системы перегиба. Обязательно пройди true
в качестве второго аргумента, чтобы система знала, что вы намеренно перезаписываете инфлекторы.
const { makeAddInflectorsPlugin } = require('graphile-utils');
module.exports = makeAddInflectorsPlugin(oldInflectors => ({
pluralize(str) {
if (str.match(/^os$/i)) {
return str + 'ses';
}
return oldInflectors.pluralize(str);
},
singularize(str) {
if (str.match(/^osses$/i) {
return str.substr(0, 2);
}
return oldInflectors.singularize(str);
}
}), true);
Я рад, что вы наслаждаетесь PostGraphile