Latest Version: 2.1.3
Dev Package
Main Package
What's New?
- 2.1.3:
- Update TS type declarations
DarksDB
DarksDB is a simple database using node.js and mysql (v1)/promise-mysql(v2+) that aims to make writing SQL statements easier by providing simple methods like get()
and update()
Installation
$ npm i darksdb
Using DarksDB
// Get the DarkDB class
const { DarkDB } = require("./darkdb.js");
// Create a new database
const db = new DarkDB({
host: "localhost",
port: 3306,
user: "example",
password: "example", // Preferably have this in something like a .env file (for example process.env.db_pass)
database: "example",
table: "example",
});
await db.connect(); // You must call this otherwise an error will be thrown!
Important: You should use promises while using DarksDB (Async/Await)
Methods
-
db.setTable()
: Set a new table- Takes in 1 argument,
table
- Takes in 1 argument,
-
db.set()
: Create a new record in the table with predefined values.- Takes in 2 arguments,
keys[]
, andvalues[]
- Takes in 2 arguments,
-
db.get()
: Fetch the keys from all the records- Takes in 1 arguments,
keys[]
- Takes in 1 arguments,
-
db.getWhere()
: Fetch the keys from all records that meet the where clauses- Takes in 2 arguments,
keys[]
, andwhere[]
- Takes in 2 arguments,
-
db.getAll()
: Fetch all of the records and fields- Takes in 0 arguments
-
db.getAllWhere()
: Fetch all of the records and fields that meet the where clauses- Takes in 1 argument,
where[]
- Takes in 1 argument,
-
db.update()
: Update all the records in that table with the new value- Takes in 2 arguments,
keys[]
andvalues[]
- Takes in 2 arguments,
-
db.updateWhere()
: Update all the records that meet the where clauses- Takes in 3 arguments,
keys[]
,values[]
, andwhere[]
- Takes in 3 arguments,
-
db.delete()
: Delete all the records that meet the where clauses- Takes in 1 argument,
where[]
- Takes in 1 argument,
-
db.deleteAll()
: Delete ALL the records in a table;- Takes in 0 arguments
-
db.runStatement()
: Run any SQL statement- Takes in 1 argument,
statement
- Takes in 1 argument,
-
db.has()
: Checks how many records there are with the key and value- Takes in 2 arguments,
key
andvalue
- Takes in 2 arguments,
where
How to use To use where
, each "where" of yours needs its own object following this data structure:
{ name: 'WHERENAME', value: 'WHEREVALUE' }
See Examples for more information.
Examples
const { DarkDB } = require('darksdb')
const db = new DarkDB({
host : 'localhost'
port : 3306
user : 'example'
password: 'example'
database: 'example'
table : 'example'
});
await db.connect();
await db.set([`one`, `two`, `three`], [1, 2, 3]);
// Add more data to the db
await db.set([`one`, `two`, `three`], [10, 20, 30]);
await db.set([`one`, `two`, `three`], [100, 200, 300]);
// Creates a simple database and makes this database
// one two three
// 1 2 3
// 10 20 30
// 100 200 300
Say you needed to get values:
You can use any one of get()
, getWhere()
, getAll()
, or getAllWhere()
await db.get([`one`]) // => [1, 10, 100];
await db.getWhere([`two`], [{ name: `one`, value: 10 }]) // => [20]
await db.getAll() // => entire database
await db.getAllWhere([{name: `three`, value: 300 }]) => // => [100, 200, 300]
Now what if you changed a value, and it needs to go back into the database. We can use update()
or updateWhere()
await db.update([`one`], [10]); // =>
// one two three
// 10 2 3
// 10 20 30
// 10 200 300
await db.updateWhere([`two`], [2000], [{ name: `three`, value: 3 }]); // =>
// one two three
// 1 2000 3
// 10 20 30
// 100 200 300
Next you decide you need to delete some data. We can use delete()
or deleteAll()
await db.delete([{ name: `two`, value: 20 }]); // =>
// one two three
// 10 2 3
// 10 200 300
await db.deleteAll(); // =>
// one two three
// (No Data)
You can run an arbitrary SQL statement, such as SELECT COUNT(*) FROM numbers WHERE 'one' = 10
by using runStatement()
await db.runStatement(`SELECT COUNT(*) FROM numbers WHERE 'one' = 10`); // => 1
There is also db.has()
, which checks if a record with the specific key and value exists
await db.has(`three`, 30); // => true
Keep in mind, optimally you should use your primary key in has()
, however it is not required
Changelog:
-
2.1.3:
- Update TS type declarations
-
2.1.2:
- Add a check to see if a connection exists
-
2.1.1:
- Condensing where for loop into a sepeerate function
- Update all functions using where for loops
- Fixed delete()
- Update documentation to add changelog/what's new?
-
2.1.0:
- Condensing keys for loop into a seperate function
- Update all functions using keys for loops
- Update documentation to add links to the main and dev packages
-
2.0.5:
- Switch to Promise-MySQL
- Rewrite a lot of the code to run better
- Fix has()
- Add documentation
-
1.0.0 - 1.0.3:
- Initial release
- Small upgrades