Package Exports
- faux-sql
- faux-sql/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (faux-sql) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
faux-sql
A local JSON database using standard MySQL queries. The fastest way to get a database into your project.
- Human readable, easy to edit data files
- A free solution to get you started
- Super easy to swap out for a real DB connection whenever you're ready
- Database files can be checked-in with git/svn for easy collaboration
Install
$ npm install faux-sqlGet started via command line
$ npx faux-sql "CREATE TABLE users (id int AUTO_INCREMENT, name varchar(100), age int)"
$ npx faux-sql "INSERT INTO users VALUES (1, 'Bill', 17), (2, 'Ted', 21)"
$ npx faux-sql "SELECT * FROM users"
[
{ id: 1, name: 'Bill', age: 17 },
{ id: 2, name: 'Ted', age: 21 },
]Use in code
import FauxSQL from 'faux-sql';
const sql = new FauxSQL();
(async () => {
await sql('INSERT INTO users (name, age) VALUES ("Neo", 33)');
const results = await sql('SELECT * FROM users');
console.log(results);
})();or
import FauxSQL from 'faux-sql';
const sql = new FauxSQL();
sql('INSERT INTO users (name, age) VALUES ("Neo", 33)')
.then(results => sql('SELECT * FROM users'))
.then((results) => {
console.log(results);
});Data Files
Each table gets saved into its own JSON file. The default file path for these files is <root>/database, however, the file path can be customized in the constructor's Options if desired.
Options
new FauxSQL({
filePath: `${process.cwd()}/special/path`,
})Multiple Databases
Each table's data file will be stored in the default database at the root of the database directory ./database/users.json unless a database name is specified in the query.
For example:
sql('CREATE TABLE p2.users (id int, name varchar(100))');
sql('INSERT INTO p2.users VALUES (1, "Bill"), (2, "Ted")');
sql('SELECT * FROM p2.users');The above data will instead be stored at ./database/p2/users.json and is distinct from any data stored in the default database.
======
Supported Query Types
In most cases, you can just use MySQL as you would normally and everything will just work
CREATE
sql(`
CREATE TABLE users (
id int AUTO_INCREMENT,
name varchar(100),
age int
)`)DROP
sql(`
DROP TABLE users
`)TRUNCATE
sql(`
TRUNCATE TABLE users
`)ALTER
sql(`
ALTER TABLE users
ADD email varchar(255) PRIMARY KEY
`)INSERT
sql(`
INSERT INTO users (name, age)
VALUES ('Bill', 17), ('Ted', 21)
`)UPDATE
sql(`
UPDATE users
SET age = 23
WHERE id = 2
`)DELETE
sql(`
DELETE FROM users
WHERE id > 1
`)SELECT
sql(`
SELECT age, count(*) as total
FROM users
WHERE age > 18 AND name != NULL
GROUP BY age
ORDER BY age DESC
LIMIT 10
`)Currently Unsupported
There are some MySQL features that are not yet supported. Please create an issue if you'd like to see a certain feature added.
- JOIN
- UNION
- HAVING
- DELETE/UPDATE using ORDER BY and LIMIT
- ...