diff --git a/src/runtime/server/services/connection.ts b/src/runtime/server/services/connection.ts new file mode 100644 index 0000000..f9b2ae7 --- /dev/null +++ b/src/runtime/server/services/connection.ts @@ -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 { + 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) + } +} diff --git a/src/runtime/server/services/index.ts b/src/runtime/server/services/index.ts index 9461760..5e1f2d3 100644 --- a/src/runtime/server/services/index.ts +++ b/src/runtime/server/services/index.ts @@ -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 { - 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( - nameOrOptions: string | { - name: string - schema: SchemaDefinition - options?: SchemaOptions - hooks?: (schema: mongoose.Schema) => void - }, - schema?: SchemaDefinition, - options?: SchemaOptions, - hooks?: (schema: mongoose.Schema) => void, -): Model { - 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(schema, options as any) - - if (hooks) - hooks(newSchema) - - return mongoose.model(name, newSchema) -} +export { defineMongooseConnection } from './connection' +export { defineMongooseModel } from './model' diff --git a/src/runtime/server/services/model.ts b/src/runtime/server/services/model.ts new file mode 100644 index 0000000..49d7bfc --- /dev/null +++ b/src/runtime/server/services/model.ts @@ -0,0 +1,32 @@ +import type { Model, SchemaDefinition, SchemaOptions } from 'mongoose' +import mongoose from 'mongoose' + +export function defineMongooseModel( + nameOrOptions: string | { + name: string + schema: SchemaDefinition + options?: SchemaOptions + hooks?: (schema: mongoose.Schema) => void + }, + schema?: SchemaDefinition, + options?: SchemaOptions, + hooks?: (schema: mongoose.Schema) => void, +): Model { + 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(schema, options as any) + + if (hooks) + hooks(newSchema) + + return mongoose.model(name, newSchema) +}