core/utils/Mongo.ts
Eunwoo Choi 2d68f7aadd
deps: update outdated and critical dependencies (#532)
* deps: bump critical deps version

* chore: specify sentry and dd debug mode

* chore: enable SwcMinify

* chore: casing

* deps: bump mongoose version to 6.8.3

* Revert "deps: bump mongoose version to 6.8.3"

This reverts commit d5b90b5c0909545d4d21553d50c5681bd93a57a4.

* deps: change mongoose version to 5.13.15

* fix: typing

* deps: update audited deps

* deps: update next-pwa and dd-trace@2

* deps: update dd-trace@3 and sentry

* fix: redirects

* fix: style

* feat: redirect using next config

* deps: update mongoose to 6.9.0

* chore: change next version in package.json

* chore: change next version to 12.3.2

* fix: model compile issue

* chore: lint

* chore: remove any

* deps: update jest version to 29

* deps: resolve remaining vulnerabilities

---------

Co-authored-by: skinmaker1345 <me@skinmaker.dev>
2023-02-01 01:34:30 +09:00

38 lines
1.5 KiB
TypeScript

import mongoose, { InferSchemaType, Model, ObtainSchemaGeneric, Schema } from 'mongoose'
import { getYYMMDD } from './Tools'
mongoose.connect(`mongodb://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOST || 'localhost'}/${process.env.MONGO_DATABASE}`)
const db = mongoose.connection
db.on('error', console.error.bind(console, 'connection error:'))
db.once('open', () =>
console.log('[DB] Mongo Connected')
)
const metrix = { day: { type: String, default: getYYMMDD, unique: true }, createdAt: { type: Date, default: Date.now }, count: Number }
const botSchema = new mongoose.Schema({
_id: String,
serverMetrix: [ metrix ],
viewMetrix: [ metrix ],
voteMetrix: [ { ...metrix, increasement: { type: Number, default: 1 } } ],
inviteMetrix: [ metrix ],
comments: [ { author: String, date: { type: Date, defualt: Date.now }, comment: String, rating: Number, upvotes: [ String ], downvotes: [ String ] } ],
})
const serverSchema = new mongoose.Schema({
_id: String,
data: {}
})
type ModelType<TSchema extends Schema> = Model<
InferSchemaType<TSchema>,
ObtainSchemaGeneric<TSchema, 'TQueryHelpers'>,
ObtainSchemaGeneric<TSchema, 'TInstanceMethods'>,
ObtainSchemaGeneric<TSchema, 'TVirtuals'>,
TSchema
> &
ObtainSchemaGeneric<TSchema, 'TStaticMethods'>
export const Bots = (mongoose.models.bots as ModelType<typeof botSchema>) || mongoose.model('bots', botSchema)
export const Servers = (mongoose.models.servers as ModelType<typeof serverSchema>) || mongoose.model('servers', serverSchema)