npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

overture

v0.0.5

Published

An ODM for cloud storage

Downloads

13

Readme

Overture

A mongoose-style ODM for cloud storage.

Overture leverages the magic of pkgcloud's stream-capable storage functionality for use as an Object Document Mapper. This allows you to skip using a database entirely, instead querying your Amazon S3 bucket or Rackspace CloudFiles container as your "database".

A typical Amazon S3-enabled Overture config would then look like:

{
	"storage" : {
		"provider" : "amazon",
		"keyId" : "<keyId>",
		"key" : "<key>"
	},
	"container" : "<container>"
}

where <keyId> and <key> are valid Amazon S3 API credentials and <container> is the name of a valid S3 Bucket.

Getting Started

npm install overture

Overture aims to simplify the Mongoose syntax for making queries and modeling objects. Initialize like so:

var Overture = require('overture'),
  config = require('<path/to/config.json>'),
  overture = new Overture(config);

Now you should be able to register a Schema and Model:

var schema = new overture.Schema({ firstname: String, lastname: String, alive: Boolean });
var RoleModel = overture.model('RoleModels', schema);

And instantiate it:

// Promise-style save
var malcolm = RoleModel({ firstname: "Malcolm", lastname: "X", alive: false }) // returns a promise

malcolm.$save().then(function(malcolm) {
	// { "_id": "<overture_document_id>", firstname: "Malcolm", lastname: "X", alive: false } saved to db.
	console.log(malcolm); // Document instance matching the saved document
});

// Node-style callback save
RoleModel({ firstname: "Angela", lastname: "Davis", alive: true }, function(err, angela) {
	// {"_id": "<overture_document_id>", firstname: "Angela", lastname: "Davis", alive: true } saved to db.
	console.log(angela); // Document instance matching the saved document
});

Overture also supports the chainable promise syntax for its models (which also accept callbacks):

RoleModel().find({alive: true }, function(err, results) {
  console.log(results); // [{"_id": "<overture_document_id>", firstname: "Angela", lastname: "Davis", alive: true}]
});

var livingRoleModels = RoleModel().find({alive: true }); // returns a promise

livingRoleModels.exec().then(function(results) {
	console.log(results); // [{"_id": "<overture_document_id>", firstname: "Angela", lastname: "Davis", alive: true}]
});

Disclaimer

More documentation coming soon. Not yet ready for production, Please remember that use of this software means providing access to your provider's APIs, which use services that may cost you money. Always be careful with your API keys! Merciba is not responsible for any loss or damage caused by use of this software.