Classification: Public Domain
The MySQL Interface package is a NodeJS interface layer. The package allows you to provide credentials and a database schema (See below) and perform select, update, insert and delete operations. As well as run regular SQL statments.
The package supports a custom relational system.
Using NPM: https://www.npmjs.com/package/mysql_interface
init(connectionParams, dbSchema)
connectionParamsis an object containing the host, port, user, password and name of the databasedbSchemais the object containing the schema to be created by the package, see the Schema header for more information
Example
const db = require('mysql_interface');
const fs = require("fs");
db.init({host: "127.0.0.1", port: 3306, user: "myUser", password: "myPassword", database: "myDatabase"}, JSON.parse(fs.readFileSync('schema.json', 'UTF-8')));{
"tableName": {
"fields": {
"column":{
"type": "columnType",
"flags": "column flags",
"default": "'default value'",
"transform": null
}
},
"pk": "column"
}
}Descriptions:
tableNameis the name of the table to be created, must be single wordscolumnis the name of the columntypeis the type of column (bigint, varchar, etc)flagsare the flags attached to this column (unsigned, NOT NULL, AUTO_INCREMENT) should be space seperated.defaultis the default value for that column, strings should be enclosed in single quotespkis an optional property that just states which column is the primary key.
db.tableName.get(query)
tableNameis the name of the tablequeryis the object containing what is being searched (see example)
Example:
db.users.get({
username: "myUsername"
})db.tableName.update(fields, where)
tableNameis the name of the tablefieldsis the object containing what fields are being updated (see example)whereis the object containing the search method (see example)
Example:
db.users.update({
fields: {
age: 18,
},
where: {
field: "username",
value: "myUsername",
operator: "="
}
})db.tableName.create(data)
tableNameis the name of the tabledatais the object containing the fields
Example:
db.users.create({
username: "myUsername",
password: "myPassword",
age: 20
})db.tableName.delete(query)
tableNameis the name of the tablequeryis the object containing what is being searched (see example)
Example:
db.users.delete({
username: "myUsername"
})This package does support relationships, both single and multiple. This can be done by adding a few more things to the schema.
Single Relationship Example
"car": {
"type": "bigint",
"flags": "unsigned",
"default": null,
"transform": null,
"related": {
"table": "users",
"field": "id"
},
"relation": "single"
}In the return for a get statment, there will be the data from the linked row.
Multiple Relationship Example
"keys": {
"type": "string",
"flags": "",
"default": null,
"transform": null,
"related": {
"table": "keys",
"field": "id"
},
"relation": "multiple"
}The data for this column should be stored in a stringified array: "[keyID1,keyID2,keyID3]" In a get statment the returned data will be in an array for each item. If the package fails to find a refrenced row, it will return null in its place.