All files / node-collections-boilerplate-nahid/search Search.js

100% Statements 10/10
100% Branches 6/6
100% Functions 7/7
100% Lines 10/10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81                                  51x       51x       51x 51x                                 1x               1x               1x               1x               1x       6x  
"use strict";
 
/**
 * @abstract
 * @public
 */
class Search
{
 
  /**
   * @param {StorageOptions} options see fields
   */
  constructor(options)
  {
    /**
     * Id field of records
     */
    this.primaryKey = options.primaryKey || 'id';
    /**
     * Connection string for search
     */
    this.connectionString = options.connectionString || '';
    /**
     * Name of collection. Derived from connection string if there is # based seperation.
     */
    this.collectionName = this.connectionString.substr(this.connectionString.indexOf('#') + 1);
    this.connectionString = this.connectionString.substr(0, this.connectionString.indexOf('#')) || this.connectionString;
  }
 
  /**
   * connect to search system
   */
  async connect()
  {
 
  }
 
  /**
   * Initialised search system with initial set of records
   * @abstract
   */
  async initialise(searchMeta, records)
  {
    throw new Error('TODO: not immplemented');
  }
 
  /**
   * @abstract
   */
  async createRecord(record)
  {
    throw new Error('TODO: not immplemented');
  }
 
  /**
   * @abstract
   */
  async updateRecord(record)
  {
    throw new Error('TODO: not immplemented');
  }
 
  /**
   * @abstract
   */
  async deleteRecord(record)
  {
    throw new Error('TODO: not immplemented');
  }
 
  /**
   * @abstract
   */
  async searchRecords(query)
  {
    throw new Error('TODO: not immplemented');
  }
}
 
module.exports = Search;