Prisma - Сумма - более 350 000 строк

У меня есть модель счета, например:

type Invoice {
  id
  amount
}

У меня 350 000 счетов. Как я могу суммировать сумму для всех счетов-фактур. (Максимальное ограничение 1000)

Этот хак не работает: https://www.prisma.io/forum/t/query-all-size-limit/557, так как у меня слишком много строк.

Связанные проблемы: https://github.com/prisma/prisma/issues/2162 https://github.com/prisma/prisma/issues/259 https://www.prisma.io/forum/t/query-all-size-limit/557 https://www.prisma.io/forum/t/sun-amount-more-than-350000-rows/7611


person Alan    schedule 01.08.2019    source источник
comment
Что-то вроде этого звучит так, как будто это лучше всего вычислять и обслуживать на сервере GraphQL; Есть ли у Invoice реализация pagination? Вместо этого вы можете сделать несколько запросов, извлекающих 1000 за раз, если вы настаиваете на этом.   -  person Magnum    schedule 01.08.2019
comment
Спасибо, @Jim, его лучше всего рассчитать и обслужить на сервере GraphQL ==> Я выполняю этот запрос на сервере GraphQL... внутри распознавателя. верну на фронтенд только результат   -  person Alan    schedule 02.08.2019


Ответы (1)


Вы можете создать собственный преобразователь в Prisma с помощью специального SQL-запроса, который будет суммировать его для вас;

Пример реализации может быть примерно таким:

const client = new Client({
  database: "prisma",
  user: "...",
  password: "...",
  host: "localhost",
  port: 3000
})

const resolvers = {
  Query: {
    async sumInvoices(parent, args, context, info){
      const response = await client.query(
        `SELECT SUM(amount) FROM Invoice WHERE YOUR_CONDITION`
      );
      return response;
    };
};

Дополнительные примеры можно посмотреть в видео Бена Авада: https://www.youtube.com/watch?time_continue=12&v=YUjlBuI8xsU

person Magnum    schedule 02.08.2019