arashsheyda / nuxt-mongoose

A Nuxt module for simplifying the use of Mongoose in your project.
https://docs.arashsheyda.me/nuxt-mongoose
76 stars 14 forks source link

Support more than one DB connection on different architectural layers #67

Open serhii-chernenko opened 3 days ago

serhii-chernenko commented 3 days ago

I want to separate logic between Nuxt 3 Layers and different DB connections:

I want to have a few DB connections. Is it possible? If not, can I expect this feature will be delivered soon?

I see it's possible for SQL databases for Nitro OOTB. I want to have the same for MongoDB: https://nitro.build/guide/database#configuration

I also checked your repo and docs, I see you support more than one defineMongooseConnection: https://nuxt-mongoose.nuxt.space/docs/api/utils#definemongooseconnection But I suspect it doesn't support different models for different connections. I guess, all the used records will be just duplicated between the connections.

I expect separation by different connections and models dirs.

// nuxt.config.ts
export default defineNuxtConfig({
  mongoose: [
  {
    uri: 'process.env.MONGODB_CMS_URI',
    options: {},
    modelsDir: 'models/cms',
    devtools: true,
  },
  {
    uri: 'process.env.MONGODB_ECOMMERCE_URI',
    options: {},
    modelsDir: 'models/ecommerce',
    devtools: true,
  }
 ],
})

Usage:

Just keep in mind that the folders have to be in different layers, just merged in result application, like

root                        # Project root directory
|
|—— layers                  # Custom Nuxt Layers for core functionalities
|   |—— core                # Core layer with core utilities and composables
|   |—— cms                 # Content Management System functionality
|   |—— ecommerce           # Ecommerce functionality
|   
|—— apps                    # Nuxt 3 applications for different platform parts
    |—— storefront          # Storefront application for public user interactions
    |—— admin               # Admin application for management

More about layers here:

Let me know please, if you don't plan to support the described feature, I'd try to implement it for my own project. But it'd be nice if you advise me on what to pay my attention.

It also could solve the previous Issues:

arashsheyda commented 1 day ago

this is great idea to have! but it definitely needs work to be done... I've been quite busy lately but I hope I can find some time in the next month to some issue tirage.