Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@marxlnfcs/nest-lokijs

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@marxlnfcs/nest-lokijs

A LokiJS Module for NestJS

  • 0.1.0
  • unpublished
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

LokiJS-ORM Module for NestJS

npm NPM Snyk Vulnerabilities for npm package Website

Warning This library is for experimentation and may contain some bugs that I will remove from time to time. With this library I'm learning how dependency injection works and how to build such libraries according to "best practice".

So please use this library with caution.

Installation

npm i @marxlnfcs/nest-lokijs

Usage

AppModule

@Module({
    imports: [
        LokiJSModule.forRoot({
            ...
        }),
        LokiJSModule.forRootAsync({
            useFactory: (configService: ConfigService) => ({
                ...
            }),
            inject: [ConfigService]
        })
    ]
})
export class AppModule {}

Patterns

Entity

The entity is a model definition, that will be stored in the database.

// ------------------------------
// entities/test.entity.ts
import {LokiEntity} from '@marxlnfcs/nest-lokijs';
import {LokiColumnBoolean, LokiColumnCreated, LokiColumnId, LokiColumnText, LokiColumnUpdated} from "../src/lib/decorators/column.decorator";

@LokiEntity('<collection-name>')
export class TestEntity {
    @LokiColumnId()
    id: string;

    @LokiColumnText()
    name: string;

    @LokiColumnText({ nullable: true })
    source: string|null;

    @LokiColumnBoolean({ default: false })
    enabled: boolean;

    @LokiColumnUpdated()
    updated: Date;

    @LokiColumnCreated()
    created: Date;
}

// ------------------------------
// app.module.ts
import {LokiJSModule} from '@marxlnfcs/nest-lokijs';

@Module({
    imports: [
        LokiJSModule.forFeature(TestEntity)
    ]
})
export class AppModule {}

Repositories

The repository helps you to fetch the data from the database. This class works like a service and you can use the dependency injection.

// ------------------------------
// repositories/test.repository.ts
import {LokiRepository, LokiJSRepository} from '@marxlnfcs/nest-lokijs';
import {TestEntity} from '../entities/test.entity.ts';

@LokiRepository(TestEntity)
export class TestRepository extends LokiJSRepository<TestEntity> {}

// ------------------------------
// app.module.ts
import {LokiJSModule} from '@marxlnfcs/nest-lokijs';

@Module({
  imports: [
    LokiJSModule.forFeature(TestRepository)
  ]
})
export class AppModule {}

Subscribers

The subscriber can be assigned to any entity. The subscriber's function is to manipulate the entities before they are returned from the repository or written to the database.

// ------------------------------
// subscribers/test.subscriber.ts
import {LokiSubscriber, ILokiJSSubscriber} from '@marxlnfcs/nest-lokijs';
import {TestEntity} from '../entities/test.entity.ts';

@LokiSubscriber(TestEntity)
export class TestSubscriber extends ILokiJSSubscriber<TestEntity> {
    afterLoad(entity: TestEntity): Promise<TestEntity> | Promise<void> | void | TestEntity {}
    beforeInsert(entity: TestEntity): Promise<TestEntity> | Promise<void> | void | TestEntity {}
    afterInsert(entity: TestEntity): Promise<TestEntity> | Promise<void> | void | TestEntity {}
    beforeUpdate(entity: TestEntity, databaseEntity: TestEntity): Promise<TestEntity> | Promise<void> | void | TestEntity {}
    afterUpdate(entity: TestEntity): Promise<TestEntity> | Promise<void> | void | TestEntity {}
    afterDelete(entity: TestEntity): Promise<TestEntity> | Promise<void> | void | TestEntity {}
}

// ------------------------------
// app.module.ts
import {LokiJSModule} from '@marxlnfcs/nest-lokijs';

@Module({
    imports: [
        LokiJSModule.forFeature(TestSubscriber)
    ]
})
export class AppModule {}

FAQs

Package last updated on 02 May 2023

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