UNPKG

@windingtree/wt-search-api

Version:

NodeJS app that enables quick search over data from Winding Tree platform

60 lines (53 loc) 1.32 kB
/* eslint-disable camelcase */ const { db } = require('../../../config'); const TABLE = 'locations'; const createTable = async () => { await db.schema.createTable(TABLE, (table) => { table.string('hotel_address').primary(); table.float('lat'); table.float('lng'); table.index(['lat']); table.index(['lng']); }); }; const dropTable = async () => { await db.schema.dropTableIfExists(TABLE); }; /** * Create or insert hotel location data. * * @param {String} hotelAddress * @param {Number} lat in degrees * @param {Number} lng in degrees * @return {Promise<void>} */ const upsert = async (hotelAddress, lat, lng) => { const existing = await db(TABLE).where({ hotel_address: hotelAddress, }).select('hotel_address'), data = { lat: lat, lng: lng, }; if (existing.length === 0) { await db(TABLE).insert(Object.assign({ hotel_address: hotelAddress }, data)); } else { await db(TABLE).where('hotel_address', hotelAddress).update(data); } }; /** * Delete hotel location data * * @param {String} hotelAddress * @return {Promise<void>} */ const delete_ = async (hotelAddress) => { await db(TABLE).where({ hotel_address: hotelAddress }).delete(); }; module.exports = { createTable, dropTable, upsert, delete: delete_, TABLE, };