Skip to content

Instantly share code, notes, and snippets.

@aaronksaunders
Last active July 11, 2020 14:07

Revisions

  1. aaronksaunders revised this gist May 28, 2014. 1 changed file with 75 additions and 73 deletions.
    148 changes: 75 additions & 73 deletions model.js
    Original file line number Diff line number Diff line change
    @@ -1,97 +1,99 @@
    exports.definition = {

    function S4() {
    return (0 | 65536 * (1 + Math.random())).toString(16).substring(1);
    }

    function guid() {
    return S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4();
    config : {
    "columns" : {
    "name" : "TEXT",
    "captured" : "integer",
    "url" : "TEXT",
    "capturedLat" : "real",
    "capturedLong" : "real"
    },
    "defaults" : {
    "name" : "",
    "captured" : 0,
    "url" : "",
    "capturedLat" : "",
    "capturedLong" : ""
    },
    "adapter" : {
    "type" : "sql",
    "collection_name" : "fugitives"
    }
    },

    config : {
    "columns" : {
    "name" : "TEXT",
    "captured" : "integer",
    "url" : "TEXT",
    "capturedLat" : "real",
    "capturedLong" : "real"
    },
    "defaults" : {
    "name" : "",
    "captured" : 0,
    "url" : "",
    "capturedLat" : "",
    "capturedLong" : ""
    },
    "adapter" : {
    "type" : "sql",
    "collection_name" : "fugitives"
    }
    },
    extendModel : function(Model) {
    _.extend(Model.prototype, {

    extendModel : function(Model) {
    _.extend(Model.prototype, {
    });
    // end extend

    });
    // end extend
    return Model;
    },

    return Model;
    },
    extendCollection : function(Collection) {

    extendCollection : function(Collection) {
    _.extend(Collection.prototype, {
    // helper functions
    function S4() {
    return (0 | 65536 * (1 + Math.random())).toString(16).substring(1);
    }

    function guid() {
    return S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4();
    }

    deleteAll : function() {

    var collection = this;
    _.extend(Collection.prototype, {

    var sql = "DELETE FROM " + collection.config.adapter.collection_name;
    db = Ti.Database.open(collection.config.adapter.db_name);
    db.execute(sql);
    db.close();
    deleteAll : function() {

    collection.trigger('sync');
    var collection = this;

    },
    var sql = "DELETE FROM " + collection.config.adapter.collection_name;
    db = Ti.Database.open(collection.config.adapter.db_name);
    db.execute(sql);
    db.close();

    saveAll : function() {
    var collection = this;
    collection.trigger('sync');

    var dbName = collection.config.adapter.db_name;
    var table = collection.config.adapter.collection_name;
    var columns = collection.config.columns;
    },

    saveAll : function() {
    var collection = this;

    db = Ti.Database.open(dbName);
    db.execute("BEGIN;");

    collection.each(function(model) {
    var dbName = collection.config.adapter.db_name;
    var table = collection.config.adapter.collection_name;
    var columns = collection.config.columns;

    if (!model.id) {
    model.id = guid();
    model.attributes[model.idAttribute ] = model.id;
    }
    db = Ti.Database.open(dbName);
    db.execute("BEGIN;");

    var names = [], values = [], q = [];
    for (var k in columns) {
    names.push(k);
    values.push(model.get(k));
    q.push("?");
    }
    var sqlInsert = "INSERT INTO " + table + " (" + names.join(",") + ") VALUES (" + q.join(",") + ");";
    collection.each(function(model) {

    db.execute(sqlInsert, values);
    if (!model.id) {
    model.id = guid();
    model.attributes[model.idAttribute] = model.id;
    }

    });

    db.execute("COMMIT;");
    db.close();
    var names = [], values = [], q = [];
    for (var k in columns) {
    names.push(k);
    values.push(model.get(k));
    q.push("?");
    }
    var sqlInsert = "INSERT INTO " + table + " (" + names.join(",") + ") VALUES (" + q.join(",") + ");";

    db.execute(sqlInsert, values);

    collection.trigger('sync');
    }
    });
    // end extend

    return Collection;
    }
    }
    db.execute("COMMIT;");
    db.close();

    collection.trigger('sync');
    }
    });
    // end extend

    return Collection;
    }
    };
  2. aaronksaunders revised this gist Feb 22, 2014. 1 changed file with 9 additions and 3 deletions.
    12 changes: 9 additions & 3 deletions model.js
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,13 @@
    exports.definition = {

    function S4() {
    return (0 | 65536 * (1 + Math.random())).toString(16).substring(1);
    }

    function guid() {
    return S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4();
    }

    config : {
    "columns" : {
    "name" : "TEXT",
    @@ -48,8 +56,6 @@ exports.definition = {

    saveAll : function() {
    var collection = this;

    var util = require("alloy/sync/util");

    var dbName = collection.config.adapter.db_name;
    var table = collection.config.adapter.collection_name;
    @@ -62,7 +68,7 @@ exports.definition = {
    collection.each(function(model) {

    if (!model.id) {
    model.id = util.guid();
    model.id = guid();
    model.attributes[model.idAttribute ] = model.id;
    }

  3. aaronksaunders revised this gist Mar 4, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion model.js
    Original file line number Diff line number Diff line change
    @@ -39,7 +39,7 @@ exports.definition = {

    var sql = "DELETE FROM " + collection.config.adapter.collection_name;
    db = Ti.Database.open(collection.config.adapter.db_name);
    db.execute(sql, model.id);
    db.execute(sql);
    db.close();

    collection.trigger('sync');
  4. aaronksaunders revised this gist Mar 4, 2013. 1 changed file with 10 additions and 7 deletions.
    17 changes: 10 additions & 7 deletions model.js
    Original file line number Diff line number Diff line change
    @@ -55,6 +55,10 @@ exports.definition = {
    var table = collection.config.adapter.collection_name;
    var columns = collection.config.columns;


    db = Ti.Database.open(dbName);
    db.execute("BEGIN;");

    collection.each(function(model) {

    if (!model.id) {
    @@ -69,16 +73,15 @@ exports.definition = {
    q.push("?");
    }
    var sqlInsert = "INSERT INTO " + table + " (" + names.join(",") + ") VALUES (" + q.join(",") + ");";
    db = Ti.Database.open(dbName);
    db.execute("BEGIN;");
    db.execute(sqlInsert, values);

    db.execute("COMMIT;");
    db.close();

    collection.trigger('sync');
    db.execute(sqlInsert, values);

    });

    db.execute("COMMIT;");
    db.close();

    collection.trigger('sync');
    }
    });
    // end extend
  5. aaronksaunders revised this gist Mar 1, 2013. 1 changed file with 17 additions and 0 deletions.
    17 changes: 17 additions & 0 deletions app_snippet.js
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,20 @@
    // add all items to collection
    Alloy.Collections.Fugitive.reset([{
    "name" : "Jeff Haynie"
    }, {
    "name" : "Nolan Wright"
    }, {
    "name" : "Don Thorp"
    }, {
    "name" : "Marshall Culpepper"
    }, {
    "name" : "Blain Hamon"
    }]);

    // save all the items
    Alloy.Collections.Fugitive.saveAll();


    // get the collection object
    Alloy.Collections.instance("Fugitive");

  6. aaronksaunders revised this gist Mar 1, 2013. 1 changed file with 40 additions and 2 deletions.
    42 changes: 40 additions & 2 deletions model.js
    Original file line number Diff line number Diff line change
    @@ -37,10 +37,48 @@ exports.definition = {

    var collection = this;

    var sql = "DELETE FROM " + collection.config.adapter.collection_name ;
    var sql = "DELETE FROM " + collection.config.adapter.collection_name;
    db = Ti.Database.open(collection.config.adapter.db_name);
    db.execute(sql);
    db.execute(sql, model.id);
    db.close();

    collection.trigger('sync');

    },

    saveAll : function() {
    var collection = this;

    var util = require("alloy/sync/util");

    var dbName = collection.config.adapter.db_name;
    var table = collection.config.adapter.collection_name;
    var columns = collection.config.columns;

    collection.each(function(model) {

    if (!model.id) {
    model.id = util.guid();
    model.attributes[model.idAttribute ] = model.id;
    }

    var names = [], values = [], q = [];
    for (var k in columns) {
    names.push(k);
    values.push(model.get(k));
    q.push("?");
    }
    var sqlInsert = "INSERT INTO " + table + " (" + names.join(",") + ") VALUES (" + q.join(",") + ");";
    db = Ti.Database.open(dbName);
    db.execute("BEGIN;");
    db.execute(sqlInsert, values);

    db.execute("COMMIT;");
    db.close();

    collection.trigger('sync');

    });
    }
    });
    // end extend
  7. aaronksaunders created this gist Mar 1, 2013.
    6 changes: 6 additions & 0 deletions app_snippet.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,6 @@
    // get the collection object
    Alloy.Collections.instance("Fugitive");


    // delete all items
    Alloy.Collections.Fugitive.deleteAll();
    50 changes: 50 additions & 0 deletions model.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    exports.definition = {

    config : {
    "columns" : {
    "name" : "TEXT",
    "captured" : "integer",
    "url" : "TEXT",
    "capturedLat" : "real",
    "capturedLong" : "real"
    },
    "defaults" : {
    "name" : "",
    "captured" : 0,
    "url" : "",
    "capturedLat" : "",
    "capturedLong" : ""
    },
    "adapter" : {
    "type" : "sql",
    "collection_name" : "fugitives"
    }
    },

    extendModel : function(Model) {
    _.extend(Model.prototype, {

    });
    // end extend

    return Model;
    },

    extendCollection : function(Collection) {
    _.extend(Collection.prototype, {

    deleteAll : function() {

    var collection = this;

    var sql = "DELETE FROM " + collection.config.adapter.collection_name ;
    db = Ti.Database.open(collection.config.adapter.db_name);
    db.execute(sql);
    db.close();
    }
    });
    // end extend

    return Collection;
    }
    }