diff --git a/pages/bots/[id]/index.tsx b/pages/bots/[id]/index.tsx index 522cccf..46e111a 100644 --- a/pages/bots/[id]/index.tsx +++ b/pages/bots/[id]/index.tsx @@ -12,7 +12,7 @@ import { ParsedUrlQuery } from 'querystring' import { Bot, ResponseProps, Theme, User } from '@types' import { git, KoreanbotsEndPoints, reportCats, Status } from '@utils/Constants' -import { get } from '@utils/Query' +import {get, put} from '@utils/Query' import Day from '@utils/Day' import { ReportSchema } from '@utils/Yup' import Fetch from '@utils/Fetch' @@ -344,6 +344,9 @@ export const getServerSideProps = async (ctx: Context) => { data } } + + await put.viewBot(ctx.query.id) + const desc = await get.botDescSafe(data.id) const user = await get.Authorization(parsed?.token) if((checkBotFlag(data.flags, 'trusted') || checkBotFlag(data.flags, 'partnered')) && data.vanity && data.vanity !== ctx.query.id) { diff --git a/pages/servers/[id]/index.tsx b/pages/servers/[id]/index.tsx index a2f02a3..3ef8bd0 100644 --- a/pages/servers/[id]/index.tsx +++ b/pages/servers/[id]/index.tsx @@ -11,7 +11,7 @@ import { ParsedUrlQuery } from 'querystring' import { Server, Theme, User } from '@types' import { DiscordEnpoints, DSKR_BOT_ID, KoreanbotsEndPoints } from '@utils/Constants' -import { get, safeImageHost } from '@utils/Query' +import {get, put, safeImageHost} from '@utils/Query' import Day from '@utils/Day' import Fetch from '@utils/Fetch' import { checkBotFlag, checkServerFlag, checkUserFlag, formatNumber, parseCookie } from '@utils/Tools' @@ -280,6 +280,9 @@ export const getServerSideProps = async (ctx: Context) => { data } } + + await put.viewServer(ctx.query.id) + const desc = safeImageHost(data.desc) const user = await get.Authorization(parsed?.token) if((checkServerFlag(data.flags, 'trusted') || checkServerFlag(data.flags, 'partnered')) && data.vanity && data.vanity !== ctx.query.id) { diff --git a/pages/servers/[id]/join.tsx b/pages/servers/[id]/join.tsx index b2dd918..fd34bdc 100644 --- a/pages/servers/[id]/join.tsx +++ b/pages/servers/[id]/join.tsx @@ -1,14 +1,16 @@ import { NextPage, GetServerSideProps } from 'next' import NotFound from 'pages/404' import { get } from '@utils/Query' +import { Servers } from '@utils/Mongo' +import { getYYMMDD } from '@utils/Tools' import { DiscordEnpoints } from '@utils/Constants' const Join: NextPage = () => export const getServerSideProps: GetServerSideProps = async (ctx) => { const data = await get.server.load(ctx.query.id as string) if(!data) return { props: {} } - // // const record = await Bots.updateOne({ _id: data.id, 'inviteMetrix.day': getYYMMDD() }, { $inc: { 'inviteMetrix.$.count': 1 } }) - // if(record.n === 0) await Bots.findByIdAndUpdate(data.id, { $push: { inviteMetrix: { count: 1 } } }, { upsert: true }) + const record = await Servers.updateOne({ _id: data.id, 'joinMetrix.day': getYYMMDD() }, { $inc: { 'joinMetrix.$.count': 1 } }) + if(record.matchedCount === 0) await Servers.findByIdAndUpdate(data.id, { $push: { joinMetrix: { count: 1 } } }, { upsert: true }) ctx.res.statusCode = 307 ctx.res.setHeader('Location', DiscordEnpoints.ServerInvite(data.invite)) return { diff --git a/utils/Mongo.ts b/utils/Mongo.ts index 3103f7c..2b55890 100644 --- a/utils/Mongo.ts +++ b/utils/Mongo.ts @@ -22,7 +22,10 @@ const botSchema = new mongoose.Schema({ const serverSchema = new mongoose.Schema({ _id: String, - data: {} + data: {}, + viewMetrix: [ metrix ], + voteMetrix: [ { ...metrix, increasement: { type: Number, default: 1 } } ], + joinMetrix: [ metrix ], }) type ModelType = Model< diff --git a/utils/Query.ts b/utils/Query.ts index 95f9f2f..5a93313 100644 --- a/utils/Query.ts +++ b/utils/Query.ts @@ -411,8 +411,8 @@ async function voteServer(userID: string, serverID: string): Promise