0.3.1 • Published 8 years ago

almaden v0.3.1

Weekly downloads
5
License
MIT
Repository
github
Last release
8 years ago

Almaden.js npm version license type npm downloads ECMAScript 6 & 5

Universal data adapter providing a normalized interface for interacting with data sources on servers and browsers.

import Database from "almaden";

const database = new Database({
	"debug": false,
	"client": "mysql",
	"connection": {
		"host": "localhost",
		"user": "root",
		"password": "",
		"database": "almaden_test"
	}
});

database
	.insert({name:"Bob"})
	.into("users")
	.results((error, rows) => {

	});

Quality and Compatibility

Build Status Code Climate Dependency Status Dev Dependency Status

Every build and release is automatically tested on the following platforms:

node 0.12.x node 0.11.x node 0.10.x iojs 2.x.x iojs 1.x.x

Sauce Test Status

If your platform is not listed above, you can test your local environment for compatibility by copying and pasting the following commands into your terminal:

npm install almaden
cd node_modules/almaden
gulp test-local

Features

Normalized Interface

Knex.js:

knex
	.select("*")
	.from("users")
	.where("id", 1);

knex("users")
	.insert({name:"Bob"});

knex.schema
	.createTable("users", tableConstructor);

Almaden.js:

database
	.select("*")
	.from("users")
	.where("id", 1);

database
	.insert({name:"Bob"})
	.into("users");

database
	.creatTable("users", tableConstructor);

Built-In Mocking

const mockResponseData = [
	{id:1,name:"Bob"},
	{id:2,name:"Gary"}
];

database.mock({
	"select * from users":
		mockResponseData,

	"select * from users where id=#$@#$":
		new Error("This is a mocked error response."),

	/select \* from users where id=[a-zA-Z]*/:
		new Error("ID must be numeric.")
});

database
	.select("*")
	.from("users")
	.results((error, rows) => {
		rows.should.eql(mockResponseData); // true
	});

database
	.select("*")
	.from("users")
	.where("id", "#$@#$")
	.results((error, rows) => {
		error.message.should.eql("This is a mocked error response.")
	});

database
	.select("*")
	.from("users")
	.where("id", "abc")
	.results((error, rows) => {
		error.message.should.eql("ID must be numeric.")
	});

Built-In Spying

const spyResponseData = [
	{id:1,name:"Bob"},
	{id:2,name:"Gary"}
];

//string or regex
let selectQuerySpy = database.spy("select * from `users`", spyResponseData);
let deleteQuerySpy = this.database.spy(/select * from `users` where `id` = '[0-9]*'/, {id: 5, name: "Jane"});

database
	.select("*")
	.from("users")
	.results((error, rows) => {
		rows.should.eql(spyResponseData); // true
	});

database
	.select("*")
	.from("users")
	.where("id", "1")
	.results((error, rows) => {
		//do something with Jane...
	});

selectQuerySpy.callCount.should.equal(1);
deleteQuerySpy.callCount.should.equal(1);

Portable Queries

const query = database.select("*");

typeof query; // Query

query.where("id", 4);

query.results((error, rows) => {
	// Do something with the results
});

Installation

Copy and paste the following command into your terminal to install Almaden:

npm install almaden --save

Import / Require

// ES6
import almaden from "almaden";
// ES5
var almaden = require("almaden");
// Require.js
define(["require"] , function (require) {
    var almaden = require("almaden");
});

Getting Started

More insights

In order to say something, you should know that almaden() ... (add your test here)

How to Contribute

See something that could use improvement? Have a great feature idea? We listen!

You can submit your ideas through our issues system, or make the modifications yourself and submit them to us in the form of a GitHub pull request.

We always aim to be friendly and helpful.

Running Tests

It's easy to run the test suite locally, and highly recommended if you're using Almaden.js on a platform we aren't automatically testing for.

npm test
0.3.1

8 years ago

0.3.0

8 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.1.8

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.4

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago