Persistence - transactions

by gotomanners

HTML

<script src="http://jacobmumm.com/demos/persistencetask/lib/persistence.js"></script>
<script src="http://jacobmumm.com/demos/persistencetask/lib/persistence.store.sql.js"></script>
<script src="http://jacobmumm.com/demos/persistencetask/lib/persistence.store.websql.js"></script>
<button id="operationOne">Operation 1</button>
<button id="operationTwo">Operation 2</button>

<ul id="result"></ul>

JavaScript

$(document).ready(function() {
    persistence.debug = false;
    persistence.store.websql.config(persistence, 'xyz_db', 'xyz', 5 * 1024 * 1024);

    var User = persistence.define('User', {
      name: "TEXT",
      age: "INT",
      sex: "TEXT"
    });
    User.index(["name"], {unique:true});
    var userList = [{name:'Avery',age:20,sex:'F'},
                    {name:'Ben',age:21,sex:'M'},
                    {name:'Cathy',age:22,sex:'F'},
                    {name:'David',age:23,sex:'M'},
                    {name:'Evelyn',age:24,sex:'F'},
                    {name:'Frank',age:25,sex:'M'},
                    {name:'Gwyneth',age:26,sex:'F'}];
    
    persistence.reset(function() {
        persistence.schemaSync(function() {
            for(var u in userList) {
                var aUser = new User({
                  name: userList[u].name,
                  age: userList[u].age,
                  sex: userList[u].sex
                });
                persistence.add(aUser);
            }
            
            persistence.transaction(function (tx) {
                if (tx) {
                    persistence.flush(tx, function() {
                        $("#result").append($("<li/>").text("Flush complete"));
                    });        
                }
            });
        });
    });
    

    var show = function show(users){
        users.forEach(function(user) {
            $("#result").append($("<li/>").text(user.name+" "+user.age+" "+user.sex));
        });
    };
    
    var logAllUsers = function logAllUsers(dbTransaction) {
        User.all().list(dbTransaction, function(users) {
            $("#result").append($("<li/>").text("##### All Users #####"));
            show(users);
        });
    };
    var logOneUser = function logOneUser(dbTransaction) {
        User.all().one(dbTransaction, function(user) {
            $("#result").append($("<li/>").text("#### One User #####"));
            show([user]);
        });
    };
    
   ...