Now we can build or database by reading schema files. Also added doc strings to all the functions. This is a much better definition of a database script for our usecases..
This commit is contained in:
@@ -4,30 +4,80 @@ const sqlite = require('sqlite');
|
||||
|
||||
class SqliteDatabase {
|
||||
|
||||
constructor(host) {
|
||||
this.host = host;
|
||||
this.connection = sqlite;
|
||||
constructor(host) {
|
||||
this.host = host;
|
||||
this.connection = sqlite;
|
||||
this.schemaDirectory = path.join(__dirname, 'schemas');
|
||||
}
|
||||
|
||||
// this.schemaDirectory = path.join(__dirname, 'schemas');
|
||||
}
|
||||
/**
|
||||
* Connect to the database.
|
||||
* @returns {Promise} succeeds if connection was established
|
||||
*/
|
||||
connect() {
|
||||
return Promise.resolve()
|
||||
.then(() => sqlite.open(this.host))
|
||||
.then(() => sqlite.exec('pragma foreign_keys = on;'));
|
||||
}
|
||||
|
||||
connect() {
|
||||
return Promise.resolve()
|
||||
.then(() => sqlite.open(this.host))
|
||||
.then(() => sqlite.exec('pragma foreign_keys = on;'));
|
||||
}
|
||||
/**
|
||||
* Run a SQL query against the database.
|
||||
* @param {String} sql SQL query
|
||||
* @param {Array} parameters in the SQL query
|
||||
* @returns {Promise}
|
||||
*/
|
||||
run(sql, parameters) {
|
||||
return this.connection.run(sql, parameters);
|
||||
}
|
||||
|
||||
all(sql, parameters) {
|
||||
return this.connection.all(sql, parameters);
|
||||
}
|
||||
/**
|
||||
* Run a SQL query against the database and retrieve all the rows.
|
||||
* @param {String} sql SQL query
|
||||
* @param {Array} parameters in the SQL query
|
||||
* @returns {Promise}
|
||||
*/
|
||||
all(sql, parameters) {
|
||||
return this.connection.all(sql, parameters);
|
||||
}
|
||||
|
||||
get(sql, parameters) {
|
||||
return this.connection.get(sql, parameters);
|
||||
}
|
||||
/**
|
||||
* Run a SQL query against the database and retrieve one row.
|
||||
* @param {String} sql SQL query
|
||||
* @param {Array} parameters in the SQL query
|
||||
* @returns {Promise}
|
||||
*/
|
||||
get(sql, parameters) {
|
||||
return this.connection.get(sql, parameters);
|
||||
}
|
||||
|
||||
run(sql, parameters) {
|
||||
return this.connection.run(sql, parameters);
|
||||
}
|
||||
/**
|
||||
* Run a SQL query against the database and retrieve the status.
|
||||
* @param {String} sql SQL query
|
||||
* @param {Array} parameters in the SQL query
|
||||
* @returns {Promise}
|
||||
*/
|
||||
execute(sql) {
|
||||
return this.connection.exec(sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup the database by running setup.sql file in schemas/.
|
||||
* @returns {Promise}
|
||||
*/
|
||||
setUp() {
|
||||
const setupSchema = this.readSqlFile('setup.sql');
|
||||
return this.execute(setupSchema);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the file contents of a SQL file in schemas/.
|
||||
* @returns {String}
|
||||
*/
|
||||
readSqlFile(filename) {
|
||||
const schemaPath = path.join(this.schemaDirectory, filename);
|
||||
const schema = fs.readFileSync(schemaPath).toString('utf-8');
|
||||
return schema;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SqliteDatabase;
|
||||
|
||||
Reference in New Issue
Block a user