function selectClicksLeft (client, userId) { var clicksPerDayAllowance = 100; var date = new sql.functionCallCreator("DATE"); var now = new sql.functionCallCreator('NOW'); return client.queryGenerated(tableDefinitions.clicks .select(tableDefinitions.clicks.count().as('numClicks')) .where( date(tableDefinitions.clicks.created).equals(date(now())), tableDefinitions.clicks.userId.equals(userId) ) ) .then(function (rows) { return clicksPerDayAllowance - (rows[0] && rows[0].numClicks || 0); }); }
function selectActiveClickOnGiftType (client, userId, giftTypeSku) { var now = new sql.functionCallCreator('NOW'); var countDownInterval = tableDefinitions.clicks.literal("INTERVAL '1 hour'"); return client.queryGenerated(tableDefinitions.clicks .select(tableDefinitions.clicks.star(), now().as('serverTime')) .where( tableDefinitions.clicks.userId.equals(userId), tableDefinitions.clicks.giftTypeSku.equals(giftTypeSku), tableDefinitions.clicks.created.plus(countDownInterval).gt(now()) ) .order(tableDefinitions.clicks.created.desc) .limit(1) ) .then(function (rows) { return rows[0]; }); }