From dcb0d08bb4ba6ee3b1c058b3fe770b24dc51c960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9B=90=EB=8D=94?= Date: Thu, 7 Jan 2021 01:21:24 +0900 Subject: [PATCH] fix: fixed fetching sending RowpacketData class --- utils/Fetch.ts | 4 ++-- utils/Query.ts | 65 +++++++++++++------------------------------------- 2 files changed, 19 insertions(+), 50 deletions(-) diff --git a/utils/Fetch.ts b/utils/Fetch.ts index f2ccc64..f601761 100644 --- a/utils/Fetch.ts +++ b/utils/Fetch.ts @@ -3,13 +3,13 @@ import * as Query from './Query' const Fetch = { bot: new DataLoader( - async (ids: string[]) => await Promise.all(ids.map((el: string) => Query.getBot(el))), + async (ids: string[]) => (await Promise.all(ids.map((el: string) => Query.getBot(el)))).map(row => ({ ...row })), { batchScheduleFn: callback => setTimeout(callback, 1000), } ), user: new DataLoader( - async (ids: string[]) => await Promise.all(ids.map((el: string) => Query.getUser(el))), + async (ids: string[]) => (await Promise.all(ids.map((el: string) => Query.getUser(el)))).map(row => ({ ...row })), { batchScheduleFn: callback => setTimeout(callback, 1000), } diff --git a/utils/Query.ts b/utils/Query.ts index f67a914..e471cff 100644 --- a/utils/Query.ts +++ b/utils/Query.ts @@ -17,60 +17,29 @@ export const knex = knsexy({ }, }) -export async function getBot(id: string, owners = true): Promise { - const res = await knex('bots') - .select([ - 'id', - 'owners', - 'lib', - 'prefix', - 'votes', - 'servers', - 'intro', - 'desc', - 'web', - 'git', - 'url', - 'category', - 'status', - 'name', - 'avatar', - 'tag', - 'verified', - 'trusted', - 'partnered', - 'discord', - 'boosted', - 'state', - 'vanity', - 'bg', - 'banner', - ]) - .where({ id }) - .orWhere({ vanity: id, boosted: 1 }) - if (res[0]) { +export async function getBot(id: string, owners=true):Promise { + const res = await knex('bots').select(['id', 'owners', 'lib', 'prefix', 'votes', 'servers', 'intro', 'desc', 'web', 'git', 'url', 'category', 'status', 'name', 'avatar', 'tag', 'verified', 'trusted', 'partnered', 'discord', 'boosted', 'state', 'vanity', 'bg', 'banner']).where({ id }).orWhere({ vanity: id, boosted: 1 }) + if(res[0]) { res[0].category = JSON.parse(res[0].category) res[0].owners = JSON.parse(res[0].owners) - if (owners) res[0].owners = res[0].owners.map(async (u: string) => await getUser(u)) - res[0].owners = await Promise.all(res[0].owners.filter((el: User | null) => el)) - res[0].vanity = res[0].vanity && (res[0].boosted || res[0].trusted || res[0].partnered) + if(owners) res[0].owners = await Promise.all(res[0].owners.map(async (u: string) => await getUser(u))) + res[0].owners = res[0].owners.filter((el: User|null)=> el).map((row: User)=> ({...row})) + res[0].vanity = res[0].vanity && ( res[0].boosted || res[0].trusted || res[0].partnered ) + } - + return res[0] || null } -export async function getUser(id: string, bots = true): Promise { - const res = await knex('users') - .select(['id', 'avatar', 'tag', 'username', 'perm', 'github']) - .where({ id }) - if (res[0]) { - const owned = await knex('bots') - .select(['id']) - .where('owners', 'like', `%${id}%`) - if (bots) res[0].bots = owned.map(async b => await getBot(b.id, false)) - else res[0].bots = owned.map(async b => b.id) - res[0].bots = await Promise.all(res[0].bots.filter((el: Bot | null) => el)) +export async function getUser(id: string, bots=true):Promise { + const res = await knex('users').select(['id', 'avatar', 'tag', 'username', 'perm', 'github']).where({ id }) + if(res[0]) { + const owned = await knex('bots').select(['id']).where('owners', 'like', `%${id}%`) + if(bots) res[0].bots = await Promise.all(owned.map(async b=> await getBot(b.id, false))) + else res[0].bots = owned.map(async b=> b.id) + res[0].bots = res[0].bots.filter((el:Bot|null)=> el).map((row: User)=> ({...row})) } - + return res[0] || null + }