New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

nestjs-papr

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nestjs-papr

Papr integration for NestJS

  • 1.2.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

nestjs-papr

Description

nestjs-papr is a module that integrates the Papr library with the Nest Framework.

It provides a way to define Papr models and use them in your Nest modules through dependency injection. This integration allows you to easily work with Papr models in your Nest application.

Supports:

  • single MongoDB connection
  • multiple MongoDD connections
  • passing custom mongo client options
  • passing custom database options
  • passing custom collection options
  • sync and async configuration
  • automatic indexes creation

Getting started

Instalation

# npm
npm install nestjs-papr

# pnpm
pnpm add nestjs-papr

# yarn
yarn install nestjs-papr

Usage

  1. Import ParpModule for root
@Module({
  imports: [
    PaprModule.forRootAsync({
      imports: [ConfigModule],
      useFactory: (configService: ConfigService) => {
        const { MONGODB_URI, MONGODB_DATABASE_NAME } =
          configService.getConfig();
        return {
          uri: MONGODB_URI,
          databaseName: MONGODB_DATABASE_NAME,
          autoIndex: true, // Create indexes automatically
          autoSchema: true, // Create schema validation automatically
        };
      },
      inject: [ConfigService],
    }),
  ]
})
  1. Define your model
// user.model.ts

import { model, schema, types } from 'nestjs-papr';

export const UserSchema = schema(
  {
    _id: types.objectId({ required: true }),
    firstName: types.string({ required: true }),
  },
  {
    timestamps: true,
  },
);
export type UserDoc = (typeof UserSchema)[0];
export type UserProps = Omit<UserDoc, '_id' | 'createdAt' | 'updatedAt'>;
export type UserCollection = 'users'
export const UserModelDef = model(UserCollection, UserSchema, { 
  indexes: [
    // Optional indexes here (IndexDescription[] type in mongodb);
  ],
  collectionOptions: {
    // Optional collectionOptions here (CollectionOptions type in mongodb);
  }
});

  1. Provide your model for feature
@Module({
  imports: [
    PaprModule.forFeature([
      UserModelDef,
    ]),
  ]
})
  1. Inject model into service and use it's power
// module.service.ts

import { Injectable } from '@nestjs/common';
import { InjectModel } from 'nestjs-papr';
import { UserModelDef, UserDoc, UserProps } from './models/user.model';

@Injectable()
export class ModuleService {
  constructor(
    @InjectModel(UserModelDef)
    private readonly userModel: typeof UserModelDef.model,
  ) {}
  
  async createUser(userProps: UserProps): Promise<UserDoc> {
    return await this.userModel.insertOne({ ...userProps });
  }
}

Decorators

InjectModel = (modelDef: ModelDef, connectionName?: string) - inject model

InjectPapr = (connectionName: string) - inject Papr instance

InjectConnection = (name: string) - inject MongoClient instance

Configuration

export interface PaprModuleOptions {

  // MongoDB connection uri
  uri?: string;
  
  // Connection name 
  connectionName?: string;
  
  // MongoDB database name
  databaseName?: string;
  
  // Custom MongoClient options
  mongoClientOptions?: MongoClientOptions;
  
  // Custom database options
  databaseOptions?: DbOptions;
  
  // Custom options for papr instance
  paprOptions?: ModelOptions;
  
  // Number of attempts to connect to database
  retryAttempts?: number;
  
  // Number of delay between attempts
  retryDelay?: number;
  
  // Whether to create indexes automatically (default: false)
  autoIndex?: boolean;
  
  // Whether to schema validation automatically  (default: false)
  autoSchema?: boolean;
  
  connectionFactory?: (connection: any, name: string) => any;
  connectionErrorFactory?: (error: Error) => Error;
}

License

nestjs-papr is MIT licensed.

Keywords

FAQs

Package last updated on 24 Jan 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc