All files / src/app/services database.service.ts

96.88% Statements 31/32
45.45% Branches 10/22
100% Functions 11/11
100% Lines 28/28

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 1051x 1x 1x 1x 1x       1x         16x       16x       16x       16x             1x 1x               1x 1x             1x 1x         1x 1x         1x 2x 2x 2x         1x 2x                               1x 1x   1x         1x                    
import {Injectable} from '@angular/core';
import {BrowserDatabase} from 'browser-database';
I
import {Contact, ContactFilter} from '../interfaces';E

@Injectable({
  providedIn: 'root'
})
export class DatabaseService {
 
  /*
   * Contact model name
   */
  readonly contactModel = 'contact';
 
  /*
   * Contact filter model name
   */
  private readonly contactFilterModel = 'contact-filter';
  /*
   * Contact filter id
   */
  private readonly contactFilterId = 'contact';
 
  /*
   * Local database reference
   */
  public browserDatabase: BrowserDatabase = new BrowserDatabase();
 
  /*
   * Insert contact
   *
   * @param contact Contact
   */
  insert(contact: Contact) {
 
    return this.browserDatabase.insert(this.contactModel, contact);
  }
 
  /*
   * Insert contact
   *
   * @param contactId Contact id
   * @param contact New contact data
   */
  update(contactId: number | string, contact: Contact) {
 
    return this.browserDatabase.update(this.contactModel, contactId, contact);
  }
 
  /*
   * Get contact
   *
   * @param contactId Contact id
   */
  getById(contactId: number | string) {
 
    return this.browserDatabase.getById(this.contactModel, contactId);
  }
 
  /*
   * Get contacts
   */
  getAll() {
 
    return this.browserDatabase.getAll(this.contactModel);
  }
 
  /*
   * Loads filter from database
   */
  loadFilter() {
 
    return this.browserDatabase.getById(this.contactFilterModel, this.contactFilterId)
        .catch(() => this.createDefaultFilter());
  }
 
  /*
   * Creates default filter
   */
  createDefaultFilter() {
 
    return this.browserDatabase.insert(this.contactFilterModel, {
      id: this.contactFilterId,
      sortBy: 'id',
      sortDir: true,
      filter: {
        id: '',
        firstName: '',
        lastName: ''
      }
    });
  }
 
  /*
   * Saves filter to database
   *
   * @param filter Current filter
   */
  saveFilter(filter: ContactFilter) {
 
    return this.browserDatabase.update(this.contactFilterModel, this.contactFilterId, filter);
  }
}