Сохранить конечные 's' для таблицы в Postgraphile - PullRequest
0 голосов
/ 02 февраля 2019

Есть ли способ отключить функцию «удалить множественное число» в Postgraphile?

У меня есть таблица OS в моей базе данных, и я использую очень крутой Postgraphile библиотека для создания интерфейса GraphQL бесплатно.Все отлично, но Postgraphile обрезает имя моей таблицы, думая, что оно во множественном числе.Поэтому я получаю allOs вместо allOses и createO, updateO и т. Д. *

Я пытался:

  • Добавление подчеркивания после имени таблицы,и затем он просто сохраняет всю вещь с подчеркиванием.
  • Добавление подчеркивания (O_S), а затем множественное число имеет заглавную-s allOS, но единственное число - O_
  • A умный комментарий с указанием E'@name os', но он по-прежнему отбрасывает s
  • умный комментарий с указанием E'@name oss', который затем правильно множит allOsses (хаха) и сохраняет оба значения для единственного числаoss

PS Если вы увидите этого Benjie / других авторов, ваша документация будет невероятной, а библиотека сэкономит мне месяцы работы.

1 Ответ

0 голосов
/ 02 февраля 2019

Это изменение выполняется инфлектором 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 ?

...