client/js/dataloader.js
author ymh <ymh.work@gmail.com>
Fri, 29 May 2015 14:57:37 +0200
changeset 444 19f0b7803aed
child 458 423bdf56d103
child 471 e0c7be5dc02c
permissions -rw-r--r--
add schema version + dataloaders to ensure data migrations + small correction for php server exmple + a readme for the php server example

(function(root) {

    "use strict";

    var DataLoader = root.Rkns.DataLoader = {
        converters: {
            from1to2: function(data) {

                //TODO: implement

                return data;
            }
        }
    };


    DataLoader.Loader = function(project, options) {
        this.project = project;
        this.dataConverters = _.defaults(options.converters || {}, DataLoader.converters);
    };


    DataLoader.Loader.prototype.convert = function(data) {
        var schemaVersionFrom = this.project.getSchemaVersion(data);
        var schemaVersionTo = this.project.getSchemaVersion();

        if (schemaVersionFrom !== schemaVersionTo) {
            var converterName = "from" + schemaVersionFrom + "to" + schemaVersionTo;
            if (typeof this.dataConverters[converterName] === 'function') {
                data = this.dataConverters[converterName](data);
            }
        }
        return data;
    };

    DataLoader.Loader.prototype.load = function(data) {
        console.log(data);
        this.project.set(this.convert(data), {
            validate: true
        });
    };

})(window);