Skip to content

Commit

Permalink
refactor: split services into individual files
Browse files Browse the repository at this point in the history
  • Loading branch information
arashsheyda committed Jan 17, 2024
1 parent 8bb7665 commit d6b8e91
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 49 deletions.
20 changes: 20 additions & 0 deletions src/runtime/server/services/connection.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import type { ConnectOptions } from 'mongoose'
import { logger } from '@nuxt/kit'
import mongoose from 'mongoose'

// @ts-ignore
import { useRuntimeConfig } from '#imports'

export async function defineMongooseConnection({ uri, options }: { uri?: string; options?: ConnectOptions } = {}): Promise<void> {
const config = useRuntimeConfig().mongoose
const mongooseUri = uri || config.uri
const mongooseOptions = options || config.options

try {
await mongoose.connect(mongooseUri, { ...mongooseOptions })
logger.success('Connected to `MongoDB`')
}
catch (err) {
logger.error('Error connecting to `MongoDB`', err)
}
}
51 changes: 2 additions & 49 deletions src/runtime/server/services/index.ts
Original file line number Diff line number Diff line change
@@ -1,49 +1,2 @@
import { logger } from '@nuxt/kit'
import mongoose from 'mongoose'
import type { ConnectOptions, Model, SchemaDefinition, SchemaOptions } from 'mongoose'

import { useRuntimeConfig } from '#imports'

export async function defineMongooseConnection({ uri, options }: { uri?: string; options?: ConnectOptions } = {}): Promise<void> {
const config = useRuntimeConfig().mongoose
const mongooseUri = uri || config.uri
const mongooseOptions = options || config.options

try {
await mongoose.connect(mongooseUri, { ...mongooseOptions })
logger.success('Connected to `MongoDB`')
}
catch (err) {
logger.error('Error connecting to `MongoDB`', err)
}
}

export function defineMongooseModel<T>(
nameOrOptions: string | {
name: string
schema: SchemaDefinition<T>
options?: SchemaOptions
hooks?: (schema: mongoose.Schema<T>) => void
},
schema?: SchemaDefinition<T>,
options?: SchemaOptions,
hooks?: (schema: mongoose.Schema<T>) => void,
): Model<T> {
let name: string
if (typeof nameOrOptions === 'string') {
name = nameOrOptions
}
else {
name = nameOrOptions.name
schema = nameOrOptions.schema
options = nameOrOptions.options
hooks = nameOrOptions.hooks
}

const newSchema = new mongoose.Schema<T>(schema, options as any)

if (hooks)
hooks(newSchema)

return mongoose.model<T>(name, newSchema)
}
export { defineMongooseConnection } from './connection'
export { defineMongooseModel } from './model'
32 changes: 32 additions & 0 deletions src/runtime/server/services/model.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import type { Model, SchemaDefinition, SchemaOptions } from 'mongoose'
import mongoose from 'mongoose'

export function defineMongooseModel<T>(
nameOrOptions: string | {
name: string
schema: SchemaDefinition<T>
options?: SchemaOptions
hooks?: (schema: mongoose.Schema<T>) => void
},
schema?: SchemaDefinition<T>,
options?: SchemaOptions,
hooks?: (schema: mongoose.Schema<T>) => void,
): Model<T> {
let name: string
if (typeof nameOrOptions === 'string') {
name = nameOrOptions
}
else {
name = nameOrOptions.name
schema = nameOrOptions.schema
options = nameOrOptions.options
hooks = nameOrOptions.hooks
}

const newSchema = new mongoose.Schema<T>(schema, options as any)

if (hooks)
hooks(newSchema)

return mongoose.model<T>(name, newSchema)
}

0 comments on commit d6b8e91

Please sign in to comment.