<!DOCTYPE html>
<html>

  <head>
    <script src="https://cdn.firebase.com/js/client/2.2.7/firebase.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-data/1.8.0/js-data.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-data-firebase/1.1.2/js-data-firebase.min.js"></script>
    <script src="store.js"></script>
    <script src="register-firebase.js"></script>
    <script src="User.js"></script>
    <script src="inject-user.js"></script>
    <script src="create.js"></script>
    <script src="update.js"></script>
    <script src="destroy.js"></script>
  </head>

  <body>
    <h1>Open up your console to see the output</h1>
  </body>

</html>
var store = new JSData.DS();

var User = store.defineResource({
  name: 'user'
});
window.promise = promise.then(function (user) {
  User.hasChanges(user.id); // false
  
  // makes changes that will be detected by the store
  user.role = 'admin';
  
  return user;
}).then(function (user) {
  // the store recognizes the user has been changed
  User.hasChanges(user.id); // true
  
  return User.save(user.id);
}).then(function (user) {
  console.log(user); // {
                     //   id: "/IJdkUdiJdkfoKlss",
                     //   firstName: "Sally",
                     //   lastName: "Jones",
                     //   role: "admin"
                     // }
                     
  // the same user is still in the store
  User.get(user.id) === user; // true
  
  return user;
});
// create an instance of User
var user = User.createInstance({
  id: 1,
  firstName: 'John',
  lastName: 'Anderson'
});

// load the user record into the store
User.inject(user);

// the user record is now in the store
User.get(1) === user; // true
User.hasChanges(1); // false
User.changes(1); // {}
// create an instance of DSFirebaseAdapter,
// pointing it to our firebase
var firebaseAdapter = new DSFirebaseAdapter({
  basePath: 'https://js-data-firebase.firebaseio.com'
});

// register the adapter with the store
// and make it the default adapter
store.registerAdapter('firebase', firebaseAdapter, { default: true });
var promise = User.create({
  firstName: 'Sally',
  lastName: 'Jones'
}).then(function (user) {
  console.log(user); // {
                     //   id: "/IJdkUdiJdkfoKlss",
                     //   firstName: "Sally",
                     //   lastName: "Jones"
                     // }
                     
  // the new user was injected into the store
  User.get(user.id) === user; // true
  
  return user;
});
window.promise = promise.then(function (user) {
  // destroy the user from Firebase
  return User.destroy(user.id);
}).then(function () {

  // find the "Sally" users in the data store
  var users = User.filter({
    where: {
      firstName: {
        '==': 'Sally'
      }
    }
  });
  
  // see? "Sally" user is no longer in the store
  users.length; // 0
});