feat: auto-import schema files
This commit is contained in:
@ -36,10 +36,13 @@ export default defineNuxtConfig({
|
||||
mongoose: {
|
||||
uri: 'process.env.MONGODB_URI',
|
||||
options: {},
|
||||
modelsDir: 'models',
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
by default, `nuxt-mongoose` will auto-import your schemas from the `models` directory from `server` directory. You can change this behavior by setting the `modelsDir` option.
|
||||
|
||||
* for more information about the options, please refer to the [Mongoose documentation](https://mongoosejs.com/docs/connections.html#options). *
|
||||
|
||||
## API
|
||||
|
||||
@ -1,6 +1,14 @@
|
||||
import { addImportsDir, addServerPlugin, addTemplate, createResolver, defineNuxtModule, logger } from '@nuxt/kit'
|
||||
import {
|
||||
addImportsDir,
|
||||
addServerPlugin,
|
||||
addTemplate,
|
||||
createResolver,
|
||||
defineNuxtModule,
|
||||
logger,
|
||||
} from '@nuxt/kit'
|
||||
import { pathExists } from 'fs-extra'
|
||||
import { tinyws } from 'tinyws'
|
||||
import { join } from 'pathe'
|
||||
import { defu } from 'defu'
|
||||
import sirv from 'sirv'
|
||||
|
||||
@ -9,6 +17,8 @@ import type { ModuleOptions } from './types'
|
||||
|
||||
import { setupRPC } from './server-rpc'
|
||||
|
||||
export type { ModuleOptions }
|
||||
|
||||
export default defineNuxtModule<ModuleOptions>({
|
||||
meta: {
|
||||
name: 'nuxt-mongoose',
|
||||
@ -18,20 +28,25 @@ export default defineNuxtModule<ModuleOptions>({
|
||||
uri: process.env.MONGODB_URI as string,
|
||||
devtools: true,
|
||||
options: {},
|
||||
modelsDir: 'models',
|
||||
},
|
||||
setup(options, nuxt) {
|
||||
const { resolve } = createResolver(import.meta.url)
|
||||
const runtimeConfig = nuxt.options.runtimeConfig
|
||||
|
||||
addImportsDir(resolve('./runtime/composables'))
|
||||
|
||||
if (!options.uri)
|
||||
console.warn('Missing `MONGODB_URI` in `.env`')
|
||||
if (!options.uri) {
|
||||
logger.warn('Missing `MONGODB_URI` in `.env`')
|
||||
return
|
||||
}
|
||||
|
||||
// Runtime Config
|
||||
nuxt.options.runtimeConfig.mongoose = defu(nuxt.options.runtimeConfig.mongoose || {}, {
|
||||
runtimeConfig.mongoose = defu(runtimeConfig.mongoose || {}, {
|
||||
uri: options.uri,
|
||||
options: options.options,
|
||||
devtools: options.devtools,
|
||||
modelsDir: options.modelsDir,
|
||||
})
|
||||
|
||||
// Setup devtools UI
|
||||
@ -91,6 +106,16 @@ export default defineNuxtModule<ModuleOptions>({
|
||||
options.references.push({ path: resolve(nuxt.options.buildDir, 'types/nuxt-mongoose.d.ts') })
|
||||
})
|
||||
|
||||
// Nitro auto imports
|
||||
nuxt.hook('nitro:config', (_nitroConfig) => {
|
||||
if (_nitroConfig.imports) {
|
||||
_nitroConfig.imports.dirs = _nitroConfig.imports.dirs || []
|
||||
_nitroConfig.imports.dirs?.push(
|
||||
join(nuxt.options.serverDir, runtimeConfig.mongoose.modelsDir),
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
// Add server-plugin for database connection
|
||||
addServerPlugin(resolve('./runtime/server/plugins/mongoose.db'))
|
||||
|
||||
|
||||
@ -4,4 +4,5 @@ export interface ModuleOptions {
|
||||
uri: string
|
||||
devtools: boolean
|
||||
options?: ConnectOptions
|
||||
modelsDir?: string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user