From fcce01c9b7655828987b1c9c1e7b99626b3335cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9B=90=EB=8D=94?= Date: Tue, 5 Jan 2021 11:35:22 +0900 Subject: [PATCH] feat: added getUser, getBot Queries --- utils/Query.ts | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/utils/Query.ts b/utils/Query.ts index eb37c44..521ea14 100644 --- a/utils/Query.ts +++ b/utils/Query.ts @@ -3,6 +3,9 @@ import jwt from 'jsonwebtoken' import fs from 'fs' import knsexy from 'knex' +const publicPem = fs.readFileSync('./public.pem') +const privateKey = fs.readFileSync('./private.key') + export const knex = knsexy({ client: 'mysql', connection: { @@ -13,10 +16,29 @@ export const knex = knsexy({ }, }) -export async function getBot(id: string) {} - -export async function getUser(id: string) { - const res = await knex('users') - .select(['id', 'avatar', 'tag', 'username', 'perm', 'github']) - .where({ id }) +export async function getBot(id: string, owners=true) { + 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: any)=> el)) + 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) { + 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=> el)) + } + + return res[0] || null + }