JSPM

@cemusta/nestjs-pulse

1.0.9
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 53
  • Score
    100M100P100Q78204F
  • License MIT

The modern MongoDB-powered scheduling library pulse for NestJS

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@cemusta/nestjs-pulse) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    project-logo

    Nestjs-PULSE

    The modern MongoDB-powered scheduling library for NestJS

    license last-commit repo-top-language repo-language-count


    Table of Contents

    Overview

    Pulse module for NestJS

    Semantic version commits are used to keep track of changes in the library. If you don't use correct commits, release wont be triggered.




    Getting Started

    Installation

    npm install --save @pulsecron/nestjs-pulse @pulsecron/pulse

    Example

    app.module.ts
    // src/app.module.ts
    
    import { Module } from '@nestjs/common';
    import { PulseModule } from '@pulsecron/nestjs-pulse';
    import { NotificationsModule } from './notification/notification.module';
    
    @Module({
      imports: [
        PulseModule.forRoot({
          db: {
            address: 'mongodb://localhost:27017/pulse',
          },
        }),
        NotificationsModule,
      ],
      providers: [],
    })
    export class AppModule {}
    
    notification.module.ts
    // src/notification/notification.module.ts
    
    import { Module } from '@nestjs/common';
    import { PulseModule } from '@pulsecron/nestjs-pulse';
    import { NotificationsQueue } from './notification.processor';
    
    @Module({
      imports: [
        PulseModule.registerQueue('notifications', {
          processEvery: '1 minutes',
          autoStart: false, // default: true
        }),
      ],
      providers: [NotificationsQueue],
      exports: [],
    })
    export class NotificationsModule {}
    
    notification.processor.ts
    // src/notification/notification.processor.ts
    
    import { Job } from '@pulsecron/pulse';
    import { Every, Queue, Define, Schedule } from '@pulsecron/nestjs-pulse';
    
    @Queue('notifications')
    export class NotificationsQueue {
      @Every({ name: 'send notifications', interval: '1 minutes' })
      async sendNotifications(job: Job) {
        console.log('Sending notifications[1]');
      }
    
      @Schedule({ name: 'send notifications', when: 'tomorrow at noon' })
      async sendNotifications(job: Job) {
        console.log('Sending notifications[2]');
      }
    
      @Now()
      async sendNotifications(job: Job) {
        console.log('Sending notifications[3]');
      }
       
      @Define({ name: 'emailJob' })
      async test(job: Job) {
        console.log('Sending email to:', job.data.to);
      }
    }
    
    
    
    notification.service.ts
    import { Inject, Injectable } from '@nestjs/common';
    import { Pulse } from '@pulsecron/pulse';
    
    @Injectable()
    export class NotificationService {
      constructor(@Inject('notifications') private pulse: Pulse) {}
    
      async scheduleEmail(email: string) {
        const emailJob = this.pulse.create('emailJob', { to: email });
        emailJob.unique(
          {
            'data.to': email,
          },
          {
            insertOnly: true,
          }
        );
        emailJob.schedule('5 seconds').save();
      }
    }
    
    



    Contributing

    Contributions are welcome! Here are several ways you can contribute:

    Contributing Guidelines
    1. Fork the Repository: Start by forking the project repository to your github account.

    2. Clone Locally: Clone the forked repository to your local machine using a git client.

      git clone https://github.com/pulsecron/nestjs-pulse
    3. Create a New Branch: Always work on a new branch, giving it a descriptive name.

      git checkout -b new-feature-x
    4. Make Your Changes: Develop and test your changes locally.

    5. Commit Your Changes: Commit with a clear message describing your updates.

      git commit -m 'Implemented new feature x.'
    6. Push to github: Push the changes to your forked repository.

      git push origin new-feature-x
    7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.

    8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!

    Contributor Graph




    License

    This project is protected under the MIT License. For more details, refer to the LICENSE file.