Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- angular.module("starter").factory("assetsRepository", function ($q, entity) {
- var _getDB = function () {
- return openDatabase("my.db", '1.0', 'description', 2* 1024 * 1024);
- };
- var _deleteTable = function () {
- _getDB().transaction(function (tx) {
- tx.executeSql("DROP TABLE IF EXISTS assets");
- });
- };
- var _createTable = function () {
- _getDB().transaction(function (tx) {
- console.log('Creating ...');
- tx.executeSql("CREATE TABLE IF NOT EXISTS assets (" +
- "id INTEGER PRIMARY KEY AUTOINCREMENT," +
- "fcbm text," +
- "description text," +
- "date text," +
- "value text," +
- "local text," +
- "status text," +
- "state text," +
- "note text," +
- "requestBoard integer," +
- "boardType text," +
- "updatedAt text," +
- "editedLocal text," +
- "editedDescription text," +
- "createdAt text," +
- "quantity integer," +
- "imageURI text," +
- "generatedFCBM text," +
- "validatedAt text)");
- });
- };
- var _select = function (callback, query, params) {
- if (typeof query !== 'string') {
- throw new TypeError('String was expected');
- }
- params = params || [];
- if (!Array.isArray(params)) {
- throw new TypeError('Array was expected');
- }
- var defer = $q.defer();
- _getDB().transaction(function (tx) {
- tx.executeSql(query,params, function (tx, res) {
- defer.resolve(callback(res));
- }, function (error) {
- defer.reject(error);
- });
- }, function (error) {
- defer.reject(error);
- });
- return defer.promise;
- };
- var _iterator = function (res) {
- var rows = [];
- if (res.rows.length > 0) {
- for(var i =0; i< res.rows.length; i++) {
- rows.push(res.rows[i]);
- }
- }
- return rows;
- };
- var _findAll = function () {
- var query = 'SELECT * FROM assets';
- return _select(function (res) {
- return _iterator(res);
- }, query);
- };
- var _buildInsertQuery = function (asset) {
- var fields = Object.keys(asset).join(',');
- var placeholders = '?,'.repeat(Object.keys(asset).length).slice(0,-1);
- return query = 'INSERT INTO assets (' + fields + ') VALUES (' + placeholders + ')';
- };
- var _insert = function (asset) {
- var query = _buildInsertQuery(asset);
- var params = _objectToArray(asset);
- return _getDB().transaction(function (tx) {
- return tx.executeSql(query, params);
- });
- };
- var _bulkInsert = function (assets) {
- if (!Array.isArray(assets)) {
- throw new TypeError('Array was expected');
- }
- var deferred = $q.defer();
- _getDB().transaction(function (tx) {
- assets.forEach(function (elem) {
- if (!elem instanceof entity.Good) {
- throw new TypeError('Object was expected');
- }
- tx.executeSql(_buildInsertQuery(elem), _objectToArray(elem), function (tx, res) {
- deferred.resolve(res);
- }, function (error) {
- deferred.reject(error);
- });
- });
- }, function (error) {
- deferred.reject(error);
- });
- return deferred.promise;
- };
- var _fetchByLocal = function (location) {
- var query = 'SELECT * FROM assets WHERE local = ?';
- return _select(function (res) {
- return _iterator(res);
- }, query, [location]);
- };
- var _fetchByFcbm = function (fcbm) {
- var query = "SELECT * FROM assets WHERE fcbm = ?";
- return _select(function (res) {
- return _iterator(res)[0];
- }, query, [fcbm]);
- };
- var _fetchNotFound = function () {
- var query = "SELECT * FROM assets WHERE status is null";
- return _select(function (res) {
- return _iterator(res);
- }, query);
- };
- var _fetchDifferentLocation = function () {
- var query = "SELECT * FROM assets WHERE editedLocal is not null and editedLocal <> local";
- return _select(function (res) {
- return _iterator(res);
- }, query);
- };
- var _fetchUnusedCondition = function () {
- var query = "SELECT * FROM assets WHERE state = 'SEM CONDIÇÃO DE USO'";
- return _select(function (res) {
- return _iterator(res);
- }, query);
- };
- var _fetchRequestedBoard = function () {
- var query = "SELECT * FROM assets WHERE requestBoard == true";
- return _select(function (res) {
- return _iterator(res);
- }, query);
- };
- var _fetchCreated = function () {
- var query = "SELECT * FROM assets WHERE status = 'Criado'";
- return _select(function (res) {
- return _iterator(res);
- }, query);
- };
- var _fetchLocations = function () {
- var query = 'SELECT DISTINCT local FROM assets';
- return _select(function (res) {
- var result = _iterator(res);
- return result.map(function (elem) {
- return elem.local;
- });
- }, query);
- };
- var _countLoaded = function () {
- var query = "SELECT COUNT(id) as count FROM assets WHERE status != 'Criado' OR status is null";
- return _select(function(res) {
- return $q.when(res.rows[0].count);
- }, query);
- };
- var _countEdited = function () {
- var query = "SELECT COUNT(id) as count FROM assets WHERE status = 'Editado'";
- return _select(function (res) {
- return res.rows[0].count
- }, query);
- };
- var _countCreated = function () {
- var query = "SELECT COUNT(id) as count FROM assets WHERE status = 'Criado'";
- return _select(function (res) {
- return res.rows[0].count;
- }, query);
- };
- var _countValidated = function () {
- var query = "SELECT COUNT(id) as count FROM assets WHERE status = 'Validado'";
- return _select(function (res) {
- return res.rows[0].count
- }, query);
- };
- var _countPristine = function () {
- var query = "SELECT COUNT(id) as count FROM assets WHERE status is null";
- return _select(function (res) {
- return res.rows[0].count;
- }, query);
- };
- var _countCreatedNoBoard = function () {
- var query = "SELECT COUNT(id) as count FROM assets WHERE status = 'Criado' AND generatedFCBM = false";
- return _select(function (res) {
- return res.rows[0].count;
- }, query);
- };
- var _countCreatedWithBoard = function () {
- var query = "SELECT count(id) as count FROM assets WHERE status = 'Criado' AND generatedFCBM false";
- return _select(function (res) {
- return res.rows[0].count;
- }, query);
- };
- var _delete = function (fcbm) {
- var deferred = $q.defer();
- var query = "DELETE FROM assets WHERE fcbm = ?";
- _getDB().transaction(function (tx) {
- tx.executeSql(query, [fcbm], function (tx, res) {
- deferred.resolve(res);
- }, function (error) {
- deferred.reject(error);
- });
- }, function (error) {
- deferred.reject(error);
- });
- return deferred.promise;
- }
- var _objectToArray = function (obj) {
- return Object.keys(obj).map(function (key) {
- return obj[key];
- });
- };
- var _update = function (asset, fcbm) {
- if (!asset instanceof Object) {
- throw new TypeError('Object was expected in param asset');
- }
- if (typeof fcbm !== 'string') {
- throw new TypeError('String was expected in param fcbm');
- }
- var params =_objectToArray(asset);
- params.push(fcbm);
- var query = 'UPDATE assets SET ';
- Object.keys(asset).forEach(function (field) {
- query += field + ' = ?,';
- });
- query = query.slice(0,-1);
- query += ' WHERE fcbm = ?';
- var deferred = $q.defer();
- _getDB().transaction(function (tx) {
- tx.executeSql(query, params, function (tx, res) {
- deferred.resolve(res);
- }, function (error) {
- deferred.reject(error);
- });
- }, function (error) {
- deferred.reject(error);
- });
- deferred.promise;
- };
- return {
- createTable: _createTable,
- deleteTable: _deleteTable,
- findAll: _findAll,
- insert: _insert,
- bulkInsert: _bulkInsert,
- fetchByLocal: _fetchByLocal,
- fetchByFcbm: _fetchByFcbm,
- fetchNotFound: _fetchNotFound,
- fetchDifferentLocation: _fetchDifferentLocation,
- fetchUnusedCondition: _fetchUnusedCondition,
- fetchRequestedBoard: _fetchRequestedBoard,
- fetchCreated: _fetchCreated,
- fetchLocations: _fetchLocations,
- countLoaded: _countLoaded,
- countEdited: _countEdited,
- countCreated: _countCreated,
- countValidated: _countValidated,
- countPristine: _countPristine,
- countCreatedNoBoard: _countCreatedNoBoard,
- countCreatedWithBoard: _countCreatedWithBoard,
- delete: _delete,
- update: _update
- };
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement