js-data-sql
Postgres/MySQL/MariaDB/SQLite3 adapter for js-data.
API Documentation
DSSqlAdapter
Quick Start
npm install --save knex js-data js-data-sql
.
You also need to install the driver for the database you want to connect to.
npm install --save <mysql|mariasql|pg|sqlite3>
var JSData = require('js-data');
var DSSqlAdapter = require('js-data-sql');
var store = new JSData.DS();
var adapter = new DSSqlAdapter({
client: 'mysql',
connection: {
host: '123.45.67.890',
user: 'ubuntu',
password: 'welcome1234'
}
});
store.registerAdapter('sql', adapter, { default: true });
Read about using JSData on the Server.
Changelog
CHANGELOG.md
Contributing
First, support is handled via the Slack Channel and
the Mailing List. Ask your questions
there.
When submitting issues on GitHub, please include as much detail as possible to
make debugging quick and easy.
- good - Your versions of js-data, js-data-sql, etc., relevant console
logs/error, code examples that revealed the issue
- better - A plnkr, fiddle, or
bin that demonstrates the issue
- best - A Pull Request that fixes the issue, including test coverage for the
issue and the fix
Github Issues.
Submitting Pull Requests
- Contribute to the issue/discussion that is the reason you'll be developing in
the first place
- Fork js-data-sql
git clone git@github.com:<you>/js-data-sql.git
cd js-data-sql; npm install;
- Write your code, including relevant documentation and tests
- Run
npm test
(build and test)
- You need Node 4.x that includes generator support without a flag
- The tests expect a database to be running as follows, but can be overridden by passing the applicable environment variable as indicated (ex.
DB_HOST=192.168.99.100 npm test
).
DB_HOST
: localhost
DB_NAME
: circle_test
DB_USER
: ubuntu
- You may use
docker
/docker-compose
to create MySql and Postgres containers to test against
docker-compose up -d
- Start containers named
js-data-sql-mysql
and js-data-sql-pg
- MySQL
- Environment variables
DB_CLIENT
= mysql
DB_USER
= root
DB_HOST
= IP of docker-machine if not localhost
- Populate schema
DB_CLIENT=mysql DB_USER=root npm run migrate-db
- Also set
DB_HOST
if different from localhost
- Run tests
npm run mocha-mysql
- Set
DB_HOST
if different from localhost
- Run cli
docker exec -it js-data-sql-mysql mysql circle_test
- Postgres
- Environment variables
DB_CLIENT
= pg
DB_USER
= ubuntu
DB_HOST
= IP of docker-machine if not localhost
- Populate schema
DB_CLIENT=pg npm run migrate-db
- Also set
DB_HOST
if different from localhost
- Run tests
npm run mocha-pg
- Also set
DB_HOST
if different from localhost
docker exec -it js-data-sql-pg psql -U ubuntu -d circle_test
- All databases
- Run all tests against MySQL and Postgres
npm run mocha-all
- Also set
DB_HOST
if different from localhost
- Your code will be linted and checked for formatting, the tests will be run
- The
dist/
folder & files will be generated, do NOT commit dist/*
! They
will be committed when a release is cut. - Submit your PR and we'll review!
- Thanks!
Have write access?
Here's how to make a release on the master
branch:
- Bump
package.json
to the appropriate version. npm test
must succeed.- This time, the built
dist/js-data-sql.js
file will be committed, so stage its changes. - Mention the release version in the commit message, e.g.
Stable Version 1.2.3
- Push to master.
- Create a git tag. Name it the version of the release, e.g.
1.2.3
- Easiest way is to just create a GitHub Release, which will create the tag for you. Name the Release and the git tag the same thing.
git fetch origin
if you tagged it via GitHub Release, so you can get the tag on your local machine.npm publish .
(Make sure you got the version bumped correctly!)
License
The MIT License (MIT)
Copyright (c) 2014-2015 Jason Dobry
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.