Skip to content

Commit

Permalink
fix(sanity): changes the query for sanity.getPlayer to include the game
Browse files Browse the repository at this point in the history
this is better than getting all of the players and then filtering later
  • Loading branch information
KenEucker committed Dec 29, 2023
1 parent 278db71 commit 5aa0142
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 16 deletions.
13 changes: 7 additions & 6 deletions examples/node/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -130,16 +130,17 @@ const getAllGamesAsync = async (pre, client, out = false, opts = {}) => {

const get1PlayerAsync = async (pre, client, out = false, opts = {}) => {
opts.limit = opts.limit ? opts.limit : 10
const testPlayerData = await client.getPlayer('Ken', opts).catch(console.error)
log(`${pre} :: success fully retrieved player data`, testPlayerData, out)
const name = 'Ken'
const testPlayerData = await client.getPlayer(name, opts).catch(console.error)
log(`${pre} :: success fully retrieved player data for [${name}]`, testPlayerData, out)

return testPlayerData
}

const get10PlayersAsync = async (pre, client, out = false, opts = {}) => {
opts.limit = opts.limit ? opts.limit : 10
const testPlayerData = await client.getPlayers(undefined, opts).catch(console.error)
log(`${pre} :: success fully retrieved player data`, testPlayerData, out)
log(`${pre} :: success fully retrieved 10 players data`, testPlayerData, out)

return testPlayerData
}
Expand Down Expand Up @@ -207,9 +208,9 @@ const runTests = async (out = false) => {
// await get10TagsAsync("Sanity", bikeTagSanityInstance, out)
await getGameAsync("Sanity", bikeTagSanityInstance, out)
// await getAllGamesAsync("Sanity", bikeTagSanityInstance, out)
// await get10PlayersAsync("Sanity", bikeTagSanityInstance, out)
await get1PlayerAsync("Sanity", bikeTagSanityInstance, out)
await get10AchievementsAsync("Sanity", bikeTagSanityInstance, out)
await get10PlayersAsync("Sanity", bikeTagSanityInstance, out)
// await get1PlayerAsync("Sanity", bikeTagSanityInstance, out)
// await get10AchievementsAsync("Sanity", bikeTagSanityInstance, out)
// await get10AmbassadorsAsync("Sanity", bikeTagSanityInstance, out)
// await get10SettingsAsync("Sanity", bikeTagSanityInstance, out)
// await get10AchievementsAsync("Sanity", bikeTagSanityInstance, out)
Expand Down
14 changes: 6 additions & 8 deletions src/sanity/getPlayers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ export async function getPlayers(
payload.names?.length === 1 ? payload.names[0] : undefined,
payload.slugs,
undefined,
fields
fields,
payload.game?.length
? ` && "${payload.game.toLowerCase()}" in games[]->slug.current`
: undefined
)

return client.fetch(query, {}).then((players) => {
Expand All @@ -37,13 +40,8 @@ export async function getPlayers(
if (payload.slugs?.length) {
playersData = playersData.filter((p) => payload.slugs?.includes(p.slug))
} else if (payload.names?.length) {
playersData = playersData.filter((p) => payload.names?.includes(p.name))
}

/// TODO: put this into the query
if (payload.game) {
playersData = playersData.filter(
(p) => p.games.indexOf(payload.game) !== -1
playersData = playersData.filter((p) =>
payload.names?.includes(p.name.toLowerCase())
)
}

Expand Down
5 changes: 3 additions & 2 deletions src/sanity/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,8 @@ export function constructSanityDocumentQuery(
player?: string,
slugs: string[] = [],
tagnumbers: number[] = [],
fields: string[] = []
fields: string[] = [],
append = ''
): any {
const gameQuery = game
? ` && ((game._ref in *[_type=="game" && lower(name)=="${game.toLowerCase()}"]._id) || (count(*[ _type == "game" && lower(name) =="${game.toLowerCase()}" && ^._id in ${docType}s[]._ref ]) > 0))`
Expand All @@ -448,7 +449,7 @@ export function constructSanityDocumentQuery(
? ` && tagnumber in ${JSON.stringify(tagnumbers)}`
: ''

return `*[_type == "${docType}"${gameQuery}${playerQuery}${slugsQuery}${tagnumbersQuery}]{${fields}}`
return `*[_type == "${docType}"${gameQuery}${playerQuery}${slugsQuery}${tagnumbersQuery}${append}]{${fields}}`
}

export function constructSanityFieldsQuery(
Expand Down

0 comments on commit 5aa0142

Please sign in to comment.