elastictype
TypeScript icon, indicating that this package has built-in type declarations

0.1.7 • Public • Published

@cytex/elastictype

A Object Document Mapping (ODM) manager for Elasticsearch written in TypeScript.


Node.js CI Status GitHub issues GitHub pull requests License codecov


⚠️ This project is still in development and not ready for production use. ⚠️
Can't wait to use it? Feel free to contribute.

📝 Table of Contents

🧐 About

Elastictype is a easy way to model application data stored in Elasticsearch. It is inpsired by mongoose and @nestjs/mongoose and thus includes type casting, validation, query building, hooks and much more. It is written in TypeScript and thus provides type safety.

🏁 Features

  • Type casting
  • Validation
  • Query building
  • Hooks
  • Type safety
  • Intuitive index declaration via Decorators

🏁 Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

Please make sure you have installed the following tools:

Installing

Install the package via npm:

npm install @cytex/elastictype --save

or via yarn:

yarn add @cytex/elastictype

🎈 Usage

Basic usage

import {
  BaseSchema,
  ElasticField,
  ElasticDataType,
  Index,
  Model,
} from "@cytex/elastictype";

@Index({
  name: "cats", // Name of the index
})
export class Cat extends BaseSchema<Cat> {
  @Prop(ElasticDataType.Keyword)
  public name: string;

  @ElasticField({
    // Type of the field (used for explicit mapping declaration)
    type: ElasticDataType.Integer,
  })
  public age: number;
}

// Create the index and the mapping in Elasticsearch
Cat.syncMapping();

// Create a new cat
const cat = new Cat();
cat.name = "Garfield";
cat.age = 42;

// Save the cat to Elasticsearch
await cat.save();

// Update the cat
await cat.update({ age: 43 });

// Delete the cat
await cat.delete();

// Find all cats
const cats = await Cat.find({ age: 43 });

// Find a cat by id
const cat = await Cat.findById("foo");

🔧 Running the tests

Tests are written with jest. You can run them with the following command:

npm run test

⛏️ Built Using

✍️ Authors

🎉 Acknowledgements

  • Nestjs - Node.js framework
  • mongoose - MongoDB object modeling for Node.js
  • @nestjs/mongoose - Mongoose module for Nest framework (not used in this project but inspired by it)

Package Sidebar

Install

npm i elastictype

Weekly Downloads

0

Version

0.1.7

License

MIT

Unpacked Size

61.6 kB

Total Files

29

Last publish

Collaborators

  • sjutz