snowstorm

Simple Javascript ORM

Usage no npm install needed!

<script type="module">
  import snowstorm from 'https://cdn.skypack.dev/snowstorm';
</script>

README

snowstorm

npm version Node.js Build

Simple Javascript ORM

:snowflake: Getting Started

Installation

npm install snowstorm

Example

Create a model and define the properties of the model

var snowstorm = require('snowstorm');

// Define the model and its properties
var Task = snowstorm.create('Task', {
    title: snowstorm.Properties.string,
    completed: snowstorm.Properties.boolean,
    createdAt: snowstorm.Properties.date('created_at')
});

Add methods to the prototype layer

Task.prototype.isCompleted = function () {
    return this.completed;
};

Create an instance of a task

// Data from server
var responseData = {
    title: 'Task out the trash',
    completed: false,
    created_at: '2015-08-20T10:00:00.000Z'
};
var task = new Task(responseData);

Access the properties/methods of the task or convert to JSON to send back to the server

console.log(task.title);          // Task out the trash
console.log(task.createdAt);      // Thu Aug 20 2015 04:00:00 GMT-0600 (MDT)
console.log(task.isCompleted());  // false

// Send back to server
var requestData = task.toJSON();

:snowflake: API

Create a model class

snowstorm.create(name, properties);

Define a property to be used on the model

snowstorm.Properties.string
// or
snowstorm.Properties.string(attr, [arguments])
Properties Arguments
snowstorm.Properties.string attr
snowstorm.Properties.number attr
snowstorm.Properties.boolean attr
snowstorm.Properties.array attr
snowstorm.Properties.object attr
snowstorm.Properties.date attr, format
snowstorm.Properties.model attr, modelClass

Create a custom property

var Moment = require('moment'); // https://github.com/moment/moment/

function moment (attr) {
    return {
        attr: attr,
        construct: function (d) {
            if (typeof d === 'undefined') {
                return null;
            }
            return Moment(d);
        },
        destruct: function (d) {
            if (!d) {
                return null;
            }
            return d.toISOString();
        }
    }
};

// Usage
var Todo = snowstorm.create('Task', {
    dueAt: moment
});

:snowflake: Running tests

npm install

npm test