Skip to content

tsand/snowstorm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

snowstorm

npm version Node.js Build

Simple Javascript ORM

❄️ 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();

❄️ 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
});

❄️ Running tests

npm install

npm test