all files / documents/store/ databases.js

100% Statements 19/19
100% Branches 2/2
100% Functions 5/5
100% Lines 19/19
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                      110×       72× 72×       110× 110× 110× 110× 72× 72×   110×       72× 72× 72×       79× 79× 79× 71× 71×            
import Ember from 'ember';
import { object } from '../util/computed';
 
const {
  String: { dasherize }
} = Ember;
 
export default Ember.Mixin.create({
 
  openDatabases: object().readOnly(),
 
  normalizeDatabaseIdentifier(identifier) {
    return dasherize(identifier);
  },
 
  createDatabase(identifier) {
    let store = this;
    return this._factoryFor(`documents:database`).create({ store, identifier });
  },
 
  database(identifier) {
    let open = this.get('openDatabases');
    let normalizedIdentifier = this.normalizeDatabaseIdentifier(identifier);
    let database = open[normalizedIdentifier];
    if(!database) {
      database = this.createDatabase(normalizedIdentifier);
      open[normalizedIdentifier] = database;
    }
    return database;
  },
 
  _databaseWillDestroy(db) {
    let identifier = db.get('identifier');
    let open = this.get('openDatabases');
    delete open[identifier];
  },
 
  willDestroy() {
    this._super();
    let open = this.cacheFor('openDatabases');
    for(let key in open) {
      let value = open[key];
      value.destroy();
    }
  }
 
});