Я хочу реализовать структуру данных, которая обеспечивает мощную фильтрацию в моем приложении.
Самая близкая реализация, которую я нашел, взята из Prisma https://www.prisma.io/docs/1.27/prisma-graphql-api/reference/queries-qwe1/#combining-multiple-filters (которая на самом деле из спецификации GraphQL, длячто я понимаю)
Пример:
{
OR: [
{
AND: [
{ title_in: ["My biggest Adventure", "My latest Hobbies"] }
{ published: true }
]
}
{ id: "cixnen24p33lo0143bexvr52n" }
]
}
Идея состоит в том, чтобы сравнить контекст с фильтрами и посмотреть, соответствует ли он.
В приведенном выше примере«context» - это объект с полями id
, title
и published
.
Я ищу алгоритм, который бы выполнял сравнение и определял, соответствует ли он совпадению.
Поскольку я не смотрю на изобретение колеса заново (особенно потому, что это сложный алгоритмИМХО, так как условия И / ИЛИ / НЕ могут быть вложенными), мне интересно, если этот конкретный алгоритм уже существует или основан на каких-то стандартах (поскольку мы можем найти эту конкретную структуру данных в нескольких приложениях, таких как Prisma, PipeDriveи другие) .
Я ищу документацию, примеры реализации или даже реализации с открытым исходным кодом.(Я использую JS)