fix: try getting own-system members first even when matching hid (#439)
this is a bandaid fix for an issue where queries matching only the hid index would get stuck forever
This commit is contained in:
parent
e0ed5b528e
commit
576b23bca5
@ -80,8 +80,34 @@ public static class ContextEntityArgumentsExt
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finally (or if by-HID lookup is specified), try member HID parsing:
|
// Finally (or if by-HID lookup is specified), try member HID parsing:
|
||||||
if (await ctx.Repository.GetMemberByHid(input, restrictToSystem) is PKMember memberByHid)
|
|
||||||
return memberByHid;
|
// For posterity:
|
||||||
|
// There was a bug that made `SELECT * FROM MEMBERS WHERE HID = $1` hang forever BUT
|
||||||
|
// `SELECT * FROM MEMBERS WHERE HID = $1 AND SYSTEM = $2` *doesn't* hang! So this is a bandaid for that
|
||||||
|
|
||||||
|
// If we are supposed to restrict it to a system anyway we can just do that
|
||||||
|
PKMember memberByHid = null;
|
||||||
|
if (restrictToSystem != null)
|
||||||
|
{
|
||||||
|
memberByHid = await ctx.Repository.GetMemberByHid(input, restrictToSystem);
|
||||||
|
if (memberByHid != null)
|
||||||
|
return memberByHid;
|
||||||
|
}
|
||||||
|
// otherwise we try the querier's system and if that doesn't work we do global
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memberByHid = await ctx.Repository.GetMemberByHid(input, ctx.System?.Id);
|
||||||
|
if (memberByHid != null)
|
||||||
|
return memberByHid;
|
||||||
|
|
||||||
|
// ff ctx.System was null then this would be a duplicate of above and we don't want to run it again
|
||||||
|
if (ctx.System != null)
|
||||||
|
{
|
||||||
|
memberByHid = await ctx.Repository.GetMemberByHid(input);
|
||||||
|
if (memberByHid != null)
|
||||||
|
return memberByHid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// We didn't find anything, so we return null.
|
// We didn't find anything, so we return null.
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
Reference in New Issue
Block a user