mysql_interface v1.1.2
Classification: Public Domain
The package supports a custom relational system.
Where can I get this?
Code Docs
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')));Database Schema The package requires a schema to create the database, this should be supplied by your application in the dbSchema argument. The schema file is organised into the following structure:
{
"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.
Select data
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"
})Update data
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: "="
}
})Insert data
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
})Delete data
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"
})Relations 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.