Skip to content
This repository has been archived by the owner on Feb 7, 2021. It is now read-only.

Latest commit

 

History

History
185 lines (138 loc) · 4.5 KB

API.md

File metadata and controls

185 lines (138 loc) · 4.5 KB

API Documentation

InMemoryDBService<T extends InMemoryEntity>

This is the service that provides the in-memory database. All methods interact with a records array and implement generics to provide type-safety and intellisense based on the T extends InMemoryEntity passed in.

Public Methods

public create(record: Partial<T>, getNextId?: () => string): T

This method takes in a Partial<T> as we do not always know the id for a record when we are creating. If we leave off the id property the service will automatically generate an id for us. Upon successful creation, the method returns the record with the newly generated id. An optional parameter of getNextId can be used to pass a function that returns a string and will be used by the service to get the next id. By default this uses the uuid npm package.

Example Usage:

const newUser = this.userService.create({
  firstName: 'Some',
  lastName: 'Person',
});

console.log({ newUser });

// logs out
// {
//     newUser: {
//        id: 1,
//        firstName: 'Some',
//        lastName: 'Person,
//    }
// }

public createMany(records: Array<Partial<T>>, getNextId?: () => string): T[]

This method takes in an array of Partial<T> as we do not always know the id for records when we are creating. If we leave off the id properties the service will automatically generate ids for us. Upon successful creation, the method returns the an array of records with the newly generated ids. An optional parameter of getNextId can be used to pass a function that returns a string and will be used by the service to get the next id. By default this uses the uuid npm package.

Example Usage:

const recordsToCreate = [
  {
    firstName: 'Some',
    lastName: 'Person',
  },
  {
    firstName: 'Other',
    lastName: 'Person',
  },
];

const newUsers = this.userService.createMany(recordsToCreate);

console.log({ newUsers });

// logs out
// {
//     newUsers: [{
//        id: 1,
//        firstName: 'Some',
//        lastName: 'Person,
//    },
//    {
//        id: 2,
//        firstName: 'Other',
//        lastName: 'Person,
//    }]
// }

public update(record: T): void

This method takes in a T record object and updates the record in the records array based on the id in the object. This method does not return a value.

Example Usage:

this.userService.update({
  id: 1,
  firstName: 'Other',
  lastName: 'Person',
});

public delete(id: string): void

This method takes in a id: string and deletes the record from the records array based on the id in the object. This method does not return a value.

Example Usage:

this.userService.delete('1');

public get(id: string): T

This method takes in a id: string and returns the record from the records array based on the id in the object.

Example Usage:

const foundUser = this.userService.get('1');

console.log({ foundUser });

// logs out
// {
//     foundUser: {
//         id: '1',
//         firstName: 'Some',
//         lastName: 'Person'
//    }
// }

public getAll(): T[]

This method has no parameters and returns the all from the records array.

Example Usage:

const allUsers = this.userService.getAll();

console.log({ allUsers });

// logs out
// {
//   allUsers: [
//     {
//       id: '1',
//       firstName: 'Some',
//       lastName: 'Person'
//     },
//     {
//       id: '2',
//       firstName: 'Other',
//       lastName: 'Person'
//     }
//   ];
// }

public query(predicate: (record: T) => boolean): T[]

This method has takes in a record: T predicate and returns all from the records array that meet that predicate's requirements.

Example Usage:

const foundUsers = this.userService.query(
  (record) => record.lastName === 'Person',
);

console.log({ foundUsers });

// logs out
// {
//   allUsers: [
//     {
//       id: '1',
//       firstName: 'Some',
//       lastName: 'Person'
//     },
//     {
//       id: '2',
//       firstName: 'Other',
//       lastName: 'Person'
//     }
//   ];
// }

Public Properties

  • records: T[] - This is the in-memory array used in all crud and read operations for the service. Please access with care.

InMemoryDBEntity

This is an interface used by the InMemoryDBService for intellisense and type-safety. Do not use this interface directly. Rather, implement your own interface that extends this.

export interface InMemoryDBEntity {
  id: string;
}