Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

WIP: find_index: distinguish same named connections #278

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions graphql/find_index.lua
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,10 @@ local function build_connection_indexes(indexes, collections)
check(collections, 'collections', 'table')
local connection_indexes = {}
for collection_name, collection in pairs(collections) do
assert(connection_indexes[collection_name] == nil)
local cur_indexes = {}
connection_indexes[collection_name] = cur_indexes

for _, c in ipairs(collection.connections) do
local ok = (c.destination_collection ~= nil and c.variants == nil)
or (c.destination_collection == nil and c.variants ~= nil)
Expand All @@ -339,20 +343,20 @@ local function build_connection_indexes(indexes, collections)
end

if c.destination_collection ~= nil then
if connection_indexes[c.destination_collection] == nil then
connection_indexes[c.destination_collection] = {}
if cur_indexes[c.destination_collection] == nil then
cur_indexes[c.destination_collection] = {}
end
validate_connection_vs_index(c, collection_name, indexes)
connection_indexes[c.destination_collection][c.name] = {
cur_indexes[c.destination_collection][c.name] = {
index_name = c.index_name,
connection_type = c.type,
}
end

if c.variants ~= nil then
for _, v in ipairs(c.variants) do
if connection_indexes[v.destination_collection] == nil then
connection_indexes[v.destination_collection] = {}
if cur_indexes[v.destination_collection] == nil then
cur_indexes[v.destination_collection] = {}
end
local quazi_connection = {
type = c.type,
Expand All @@ -363,7 +367,7 @@ local function build_connection_indexes(indexes, collections)
}
validate_connection_vs_index(quazi_connection,
collection_name, indexes)
connection_indexes[v.destination_collection][c.name] = {
cur_indexes[v.destination_collection][c.name] = {
index_name = v.index_name,
connection_type = c.type,
}
Expand Down Expand Up @@ -540,8 +544,9 @@ local function get_index_name(self, collection_name, from, filter, args)
-- performed by an index from the connection, then the result will be
-- postprocessed using `pivot`.
if from.collection_name ~= nil then
local cur_indexes = connection_indexes[from.collection_name]
local connection_index =
connection_indexes[collection_name][from.connection_name]
cur_indexes[collection_name][from.connection_name]
local index_name = connection_index.index_name
assert(index_name ~= nil, 'index_name must not be nil')
-- offset in this case uses frontend filtering, so we should not set
Expand Down