it( "should return the correct results", function( done ) {
		var expectedResults = { name: "Neo", alias: "The One" };

		sql.addFileMock( "./spec/userById", function( stepName, stepArg ) {
			return expectedResults;
		} );

		sql.getPlainContext()
			.step( "user", {
				preparedSql: sql.fromFile( "./userById" ),
				params: {
					boardId: {
						val: 1,
						type: sql.INT
					},
					laneId: {
						val: 2,
						type: sql.INT
					}
				}
			}
			)
			.end( function( sets ) {
				expect( sets.user ).to.eql( expectedResults );
				done();
			} );

	} );
Exemplo n.º 2
0
var getAllMeasureInfoByCod = function (measureCod, language) {
  return sql.getPlainContext()
// Step 1 get Measure Info Description and Measure Unit
.step('measure', {query: sql.fromFile('./sql/getMeasureByCod'),
  params: {
    measureCod: {
      type: sql.INT,
      val: parseInt(measureCod)
    },
    language: {
      type: sql.INT,
      val: language
    }
  }
})
// Setp 2 - Get the Multiplier from another table
.step('multiplier', function (execute, data) {
  execute({
    query: sql.fromFile('./sql/getMultiplierByCod'),
    params: {
      measureCod: {
        type: sql.INT,
        val: parseInt(measureCod)
      }
    }
  })
})
} // return a promise .then()
  return new Promise((resolve, reject) => {
    // Get the top and offset if any
    let {top, offset} = utils.paginate(__top, __page);

    // No pagination will be used if *top* is undefined.
    let _query = _.isUndefined(top)
      ? sql.fromFile('./sql/user.find.sql')
      : utils.paginateQuery(sql.fromFile('./sql/user.find.sql'), 'FROM [dbo].[User]', top, offset);

    // Execute the query
    sql.execute({
      query: _query
    })
    .then((users) => resolve(utils.objectify(users)))
    .catch(reject);
  });
Exemplo n.º 4
0
            }).then(function (results) {
                // Create discard pile arrays for each discard pile
                for (let i = 0; i < results.length; i++) {
                    // Create the discard pile if not yet created.
                    if (gameDetails.discardPiles[results[i].DiscardPileColor.toLowerCase()] === undefined)
                        gameDetails.discardPiles[results[i].DiscardPileColor.toLowerCase()] = {[results[i].DiscardPileSK]: []};

                    // Add card to discard pile array. This will put cards in ascending order so top-most card is at end of the array.
                    if (results[i].CardSK !== null)
                        gameDetails.discardPiles[results[i].DiscardPileColor.toLowerCase()][results[i].DiscardPileSK].push({CardSK: results[i].CardSK, CardColor: results[i].CardColor.toLowerCase(), CardValue: results[i].CardValue})
                }

                sql.execute({
                    query: sql.fromFile("./sql/GetScorePiles"),
                    params: {
                        gameSK: {
                            val: gameSK
                        }
                    }
                }).then(function (results) {
                    // For each player, fill their scorePiles object with an array of cards for each of their score piles.
                    for (let i = 0; i < gameDetails.players.length; i++) {

                        for (let j = 0; j < results.length; j++) {
                            if (results[j].GameMemberSK === gameDetails.players[i].gameMemberSK) {
                                // Creates a missing score pile
                                if (gameDetails.players[i].scorePiles[results[j].ScorePileColor.toLowerCase()] === undefined)
                                    gameDetails.players[i].scorePiles[results[j].ScorePileColor.toLowerCase()] = {[results[j].ScorePileSK]: []};

                                // Fills the score piles
                                if (results[j].CardSK !== null)
                                    gameDetails.players[i].scorePiles[results[j].ScorePileColor.toLowerCase()][results[j].ScorePileSK].push({CardSK: results[j].CardSK, CardColor: results[j].CardColor.toLowerCase(), CardValue: results[j].CardValue});

                            }
                        }
                    }

                    sql.execute({
                        query: sql.fromFile("./sql/GetPlayerHands"),
                        params: {
                            gameSK: {
                                val: gameSK
                            }
                        }
                    }).then(function (results) {

                        // Goes through each player and adds cards to their hand from the results
                        for (let i = 0; i < gameDetails.players.length; i++) {
                            for (let j = 0; j < results.length; j++) {
                                if (gameDetails.players[i].gameMemberSK === results[j].PlayerSK) {
                                    gameDetails.players[i].hand.push({CardSK: results[j].CardSK, CardColor: results[j].CardColor.toLowerCase(), CardValue: results[j].CardValue})
                                }
                            }
                        }

                        callback(gameDetails);
                    });
                });
            });
Exemplo n.º 5
0
.step('multiplier', function (execute, data) {
  execute({
    query: sql.fromFile('./sql/getMultiplierByCod'),
    params: {
      measureCod: {
        type: sql.INT,
        val: parseInt(measureCod)
      }
    }
  })
})
Exemplo n.º 6
0
var getMultiplierByCod = function (measureCod) {
  return sql.execute({
    query: sql.fromFile('./sql/getMultiplierByCod'),
    params: {
      measureCod: {
        type: sql.INT,
        val: parseInt(measureCod)
      }
    }
  })
}
  return new Promise((resolve, reject) => {
    // Get the params
    let _params = getParams(_.assign({}, user, { userId: userId }));

    sql.execute({
      query: sql.fromFile('./sql/user.update.sql'),
      params: _params,
    })
    .then((users) => resolve(utils.objectify(users[0])))
    .catch(reject)
  });
 return new Promise((resolve, reject) => {
   sql.execute({
     query: sql.fromFile('./sql/user.findByEmail.sql'),
     params: {
       email: {
         type: sql.VarChar(255),
         val: email,
       },
     },
   })
   .then(user => resolve(_.head(user)))
   .catch(reject);
 });
 return new Promise((resolve, reject) => {
   sql.execute({
     query: sql.fromFile('./sql/user.disable.sql'),
     params: {
       userId: {
         type: sql.BigInt,
         val: userId
       }
     }
   })
   .then(resolve)
   .catch(reject);
 });
Exemplo n.º 10
0
var getStateByCod = function (stateCod, language) {
  return sql.execute({
    query: sql.fromFile('./sql/getStateByCod'),
    params: {
      stateCod: {
        type: sql.INT,
        val: parseInt(stateCod)
      },
      language: {
        type: sql.INT,
        val: language
      }
    }
  })
}
 return new Promise((resolve, reject) => {
   // Execute the query
   sql.execute({
     query: sql.fromFile('./sql/user.initialize.sql')
   })
   .then((res) => {
     if (logSuccess) {
       utils.log('User table initialized.');
     }
     resolve(res);
   })
   .catch((err) => {
     utils.log('Could not initialize user table:');
     utils.log(err);
     reject(err);
   });
 });
  return new Promise((resolve, reject) => {
    // Handle incorrecet input
    if (!user) { return reject(new Error('Cannot create user. None provided.')); }

    // Password and email are required
    if (!user.password) { return reject(new Error('Cannot create user. No password provided')); }
    if (!user.email) { return reject(new Error('Cannot create user. No email provided')); }

    // Encrypt the password
    let _password = auth.encryptPassword(user.password);

    let _params = getParams(_.assign({}, user, { password: _password }));

    sql.execute({
      query: sql.fromFile('./sql/user.create.sql'),
      params: _params,
    })
    .then((users) => resolve(utils.objectify(users[0])))
    .catch(reject)
  });
  return new Promise((resolve, reject) => {
    // Execute the query and then objectify it if needed.
    sql.execute({
      query: sql.fromFile('./sql/user.findById.sql'),
      params: {
        userId: {
          type: sql.BigInt,
          val: userId
        }
      }
    })
    .then((users) => {
      // Should the password be returned?
      let _user = !!keepPassword
        ? users[0]
        : _.omit(users[0], 'password');

      // Resolve the user
      resolve(utils.objectify(_user));
    })
    .catch(reject);
  });
Exemplo n.º 14
0
        }).then(function (results) {
            let players = [];
            let spectators = [];

            // Place game players into an array.
            for (let i = 0; i < results.length; i++) {
                if (results[i].gameMemberType === 'Player') {
                    players.push({
                        gameMemberSK: results[i].gameMemberSK,
                        accountSK: results[i].accountSK,
                        username: results[i].username,
                        skillRating: results[i].skillRating,
                        isHost: results[i].isHost,
                        isReady: results[i].isReady,
                        isTurn: results[i].isTurn,
                        hand: [],
                        scorePiles: {}})
                } else {
                    spectators.push({
                        gameMemberSK: results[i].gameMemberSK,
                        accountSK: results[i].accountSK,
                        username: results[i].username,
                        isHost: results[i].isHost})
                }
            }

            // Structure the results
            const gameDetails = {gameSK: gameSK,
                                 gameName: results[0].gameName,
                                 gameState: results[0].gameState,
                                 turnState: results[0].turnState,
                                 isPasswordProtected: results[0].isPasswordProtected === 1,
                                 deckSize: results[0].deckSize,
                                 deckSK: results[0].deckSK,
                                 discardPiles: {},
                                 players: players,
                                 spectators: spectators};

            sql.execute({
                query: sql.fromFile("./sql/GetDiscardPiles"),
                params: {
                    gameSK: {
                        val: gameSK
                    }
                }
            }).then(function (results) {
                // Create discard pile arrays for each discard pile
                for (let i = 0; i < results.length; i++) {
                    // Create the discard pile if not yet created.
                    if (gameDetails.discardPiles[results[i].DiscardPileColor.toLowerCase()] === undefined)
                        gameDetails.discardPiles[results[i].DiscardPileColor.toLowerCase()] = {[results[i].DiscardPileSK]: []};

                    // Add card to discard pile array. This will put cards in ascending order so top-most card is at end of the array.
                    if (results[i].CardSK !== null)
                        gameDetails.discardPiles[results[i].DiscardPileColor.toLowerCase()][results[i].DiscardPileSK].push({CardSK: results[i].CardSK, CardColor: results[i].CardColor.toLowerCase(), CardValue: results[i].CardValue})
                }

                sql.execute({
                    query: sql.fromFile("./sql/GetScorePiles"),
                    params: {
                        gameSK: {
                            val: gameSK
                        }
                    }
                }).then(function (results) {
                    // For each player, fill their scorePiles object with an array of cards for each of their score piles.
                    for (let i = 0; i < gameDetails.players.length; i++) {

                        for (let j = 0; j < results.length; j++) {
                            if (results[j].GameMemberSK === gameDetails.players[i].gameMemberSK) {
                                // Creates a missing score pile
                                if (gameDetails.players[i].scorePiles[results[j].ScorePileColor.toLowerCase()] === undefined)
                                    gameDetails.players[i].scorePiles[results[j].ScorePileColor.toLowerCase()] = {[results[j].ScorePileSK]: []};

                                // Fills the score piles
                                if (results[j].CardSK !== null)
                                    gameDetails.players[i].scorePiles[results[j].ScorePileColor.toLowerCase()][results[j].ScorePileSK].push({CardSK: results[j].CardSK, CardColor: results[j].CardColor.toLowerCase(), CardValue: results[j].CardValue});

                            }
                        }
                    }

                    sql.execute({
                        query: sql.fromFile("./sql/GetPlayerHands"),
                        params: {
                            gameSK: {
                                val: gameSK
                            }
                        }
                    }).then(function (results) {

                        // Goes through each player and adds cards to their hand from the results
                        for (let i = 0; i < gameDetails.players.length; i++) {
                            for (let j = 0; j < results.length; j++) {
                                if (gameDetails.players[i].gameMemberSK === results[j].PlayerSK) {
                                    gameDetails.players[i].hand.push({CardSK: results[j].CardSK, CardColor: results[j].CardColor.toLowerCase(), CardValue: results[j].CardValue})
                                }
                            }
                        }

                        callback(gameDetails);
                    });
                });
            });
        }, function (err) {
Exemplo n.º 15
0
const sql = require('seriate');

module.exports = {

    //// Maintenance ////

    // Shuts down all currently active games.
    shutdownAllGames(callback) {
        sql.execute({
            query: sql.fromFile("./sql/ShutdownAllGames")
        }).then(function(results) {
            callback(results);
        }, function(err) {
            callback({errors: err});
        });
    },


    //// User ////


    // Returns User information and whether the user Exists
    signinGoogleAccount(userData, callback){
        sql.execute({
            query: sql.fromFile("./sql/SigninGoogleAccount"),
            params: {
                googleID: {
                    val: userData.id
                },
                avatarURL: {
                    val: userData.image.url
import _ from 'lodash';
import sql from 'seriate';
import moment from 'moment';
import Promise from 'bluebird';

import utils from '../../utils/utils';
import auth from '../../services/auth/auth.service';

// Import the sql module from utils.
const { sql: _sql } = utils;

/**
 * Read the userModel
 */
const userModel = _sql.parseInitTable(
  sql.fromFile('./sql/user.initialize.sql'),
  [],
  false,
  sql
);

/**
 * Items from the user model which not to use in the params.
 */
const nonParams = [
  'password',
  'dateCreated',
  'dateUpdated',
  'isDisabled',
];