All files / server db.ts

94.87% Statements 37/39
50% Branches 1/2
100% Functions 1/1
94.87% Lines 37/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 401x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 9x 9x 9x 9x 9x 9x 9x     9x 9x 9x 9x 9x 9x 9x 9x  
// src/db.ts
import { loadEnv } from "dotenv-local";
import mongoose, { CompileModelOptions, Schema } from "mongoose";
 
const { MONGO_DB_URL } = loadEnv({
  envPrefix: ["API_", "MONGO_"],
  envInitial: <any>process.env,
});
 
mongoose.connect(MONGO_DB_URL, {
  autoCreate: true,
  monitorCommands: true,
});
 
export const dbConnection = mongoose.connection;
 
dbConnection.on(
  "error",
  console.error.bind(console, "MongoDB connection error:")
);
 
export const createModel = <T>(
  name: string,
  schema: Schema,
  collectionName?: string,
  options: CompileModelOptions = {}
) => {
  const exist = mongoose.models[name];
  if (exist) {
    mongoose.deleteModel(name);
  }
  const model = mongoose.model<T>(name, schema, collectionName, {
    ...options,
    connection: dbConnection,
  });
  //dbConnection.collections;
  model.createCollection();
  return model;
};