A JSON based data modelling and persistence library with alternate storage mechanisms, designed with static site generation in mind.
- Data modelling with relationships
- Data validation
- Data queries and fuzzy search
- Store data using AWS S3 or HTTP APIs
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.
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;
}
}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);