0.8.0 • Published 7 months ago

@rxstack/memory-service v0.8.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 months ago

The RxStack Memory Service Module

Node.js CI Maintainability Test Coverage

In-memory data storage that implements @rxstack/platform adapter API and querying syntax.

Table of content

Installation

npm install @rxstack/memory-service --save

Setup

MemoryServiceModule needs to be registered in the application. Let's create the application:

import {Application, ApplicationOptions} from '@rxstack/core';
import {MemoryServiceModule} from '@rxstack/memory-service';

export const APP_OPTIONS: ApplicationOptions = {
  imports: [
    MemoryServiceModule
  ],
  providers: [
    // ...
  ]
};

new Application(APP_OPTIONS).start();

Usage

First we need to create model interface and InjectionToken:

import {InjectionToken} from 'injection-js';
import {MemoryService} from '@rxstack/memory-service';

export interface Product {
  id: string;
  name: string;
}

export const PRODUCT_SERVICE = new InjectionToken<MemoryService<Product>>('PRODUCT_SERVICE');

then register it in the application provides:

import {ApplicationOptions} from '@rxstack/core';
import {MemoryService} from '@rxstack/memory-service';

export const APP_OPTIONS: ApplicationOptions = {
  // ...
  providers: [
    {
      provide: PRODUCT_SERVICE,
      useFactory: () => {
        return new MemoryService({ idField: 'id', collection: 'products', defaultLimit: 25 });
      },
      deps: [],
    },
  ]
};

Read more about platform services

Matcher

Matcher is used to filter the entries. If you need a custom matcher then implement MatherInterface:

import {FilterCallback, MatcherInterface} from '@rxstack/memory-service';
import {Injectable} from 'injection-js';

@Injectable()
export class MyCustomMatcher implements MatcherInterface {

  match(query: {[key: string]: any}): FilterCallback {
    // your custom logic
  }
}

and register it in the application providers:

import {ApplicationOptions} from '@rxstack/core';
import {MATCHER_TOKEN} from '@rxstack/memory-service';

export const APP_OPTIONS: ApplicationOptions = {
  // ...
  providers: [
    // ...
    { provide: MATCHER_TOKEN, useClass: MyCustomMatcher },
  ]
};

MyCustomMatcher will replace the original matcher

Sorter

Sorter is used to sort the entries. If you need a custom sorter then implement SorterInterface:

import {SorterInterface} from '@rxstack/memory-service';
import {SortInterface} from '@rxstack/query-filter';
import {Injectable} from 'injection-js';

@Injectable()
export class MyCustomSorter implements SorterInterface {

  sort(sort: SortInterface): ComparisonCallback {
    // your custom logic
  }
}

and register it in the application providers:

import {ApplicationOptions} from '@rxstack/core';
import {SORTER_TOKEN} from '@rxstack/memory-service';

export const APP_OPTIONS: ApplicationOptions = {
  // ...
  providers: [
    // ...
    { provide: SORTER_TOKEN, useClass: MyCustomSorter },
  ]
};

MyCustomSorter will replace the original sorter

License

Licensed under the MIT license.

0.8.0

7 months ago

0.7.0

4 years ago

0.6.0

5 years ago

0.5.0

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

7 years ago

0.1.0

7 years ago