Skip to content

An ORM designed for the backend and frontend with alternative storage mechanisms.

Notifications You must be signed in to change notification settings

acodeninja/persist

Repository files navigation

@acodeninja/persist

A JSON based data modelling and persistence library with alternate storage mechanisms, designed with static site generation in mind.

NPM Version NPM Unpacked Size GitHub top language NPM Downloads

DeepSource DeepSource CodeRabbit PR Reviews

Features

  • Data modelling with relationships
  • Data validation
  • Data queries and fuzzy search
  • Store data using AWS S3 or HTTP APIs

Terms

model : Defines the shape of an entity's data within your application.

property : Analogous to a data type, allows defining the type of properties associated with a model.

connection : Abstraction layer that establishes a connection to the configured storage engine and supports CRUD and query functionality.

engine : An engine allows a connection to send instructions to a given service, it may support anything from a RESTFul HTTP API to a cloud service like S3 or DynamoDB.

Usage

Models

import Persist from '@acodeninja/persist';

class Person extends Persist.Model {
    static {
        Person.name = Persist.Property.String.required;
        Person.dateOfBirth = Persist.Property.Date.required;
        Person.height = Persist.Property.Number.required;
        Person.isStudent = Persist.Property.Boolean.required;
    }
}

Storage

import Persist from '@acodeninja/persist';
import {S3Client} from "@aws-sdk/client-s3";
import S3StorageEngine from '@acodeninja/persist/storage/s3';

const engine = new S3StorageEngine({
    bucket: 'person-storage',
    client: new S3Client(),
});

const connection = Persist.registerConnection('people', engine, [Person]);

const person = new Person({
    name: 'Joe Bloggs',
    dateOfBirth: new Date('1993-04-02T00:00:00.000Z'),
    height: 1.85,
    isStudent: true,
});

await connection.put(person);

Find out more

About

An ORM designed for the backend and frontend with alternative storage mechanisms.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •