LoRaWAN-Signal-Mapping/server/Repos.SQLite/GatewayRepo.mjs

53 lines
1.3 KiB
JavaScript

"use strict";
class GatewayRepo {
constructor({ database }) {
this.db = database;
}
add(...gateways) {
const statement = this.db.prepare(`INSERT INTO gateways (
id,
latitude, longitude,
altitude
) VALUES (
:id,
:latitude, :longitude,
:altitude
)`);
for(let gateway of gateways)
statement.run(gateway);
}
/**
* Determines whether a gateway exists in the dayabase with the given name.
* @param {string} id The id of the gateway.
* @return {bool} Whether a gateway with the given name exists in the database.
*/
exists(id) {
// Note that normally a count wouldn't be appropriate here just to test for existence, but it's ok because it's guaranteed that there will only ever be a single entry with a given id.
let statement = this.db.prepare(`SELECT COUNT(id) AS count
FROM gateways
WHERE id = :id`);
let count = statement.get({ id }).count;
return count > 0;
}
get_by_id(id) {
return this.db.prepare(`SELECT * FROM gateways WHERE id = :id`).get({ id });
}
/**
* Iterates over all the gateways in the table.
* TODO: Use Symbol.iterator here?
* @return {Generator} A generator that can be used with for..of
*/
iterate() {
return this.db.prepare(`SELECT * FROM gateways`).iterate();
}
}
export default GatewayRepo;