def decrease_user_amount(user_id, amount): q = qb.make('update', __table__) qb.add_values(q, [('balance', 'balance - {amount}')], {'amount': amount}) qb.add_where(q, '%s = {pk}' % __fields__[0], {'pk': user_id}) raw_query(*qb.to_sql(q), commit=True) cache.delete(__cache_key__ % user_id)
def get_task_by_id(task_id): q = qb.make('select', __table__) qb.set_columns(q, __fields__) qb.add_where(q, '%(pk)s = {%(pk)s}' % {'pk': __fields__[0]}, { __fields__[0]: task_id }) cursor = raw_query(*qb.to_sql(q)) return make_task_from_row(cursor.fetchone())
def update_tasks(query): if isinstance(query, dict): qb.set_table(query, __table__) qb.set_columns(query, __fields__) query, params = qb.to_sql(query) else: query, params = query, {} cursor = raw_query(query, params) return cursor.rowcount
def get_user_by_credentials(email, password): q = qb.make('select', __table__) qb.set_columns(q, __fields__) qb.add_where(q, 'email = {email}', {'email': email}) qb.set_limit(q, 1) cursor = raw_query(*qb.to_sql(q)) user = make_user_from_row(cursor.fetchone()) if user is not None and not check_password(password, user['password']): return None return user
def update_task(task): q = qb.make('update', __table__) qb.add_values(q, [ (field, '{%s}' % field) for field in __fields__[1:] ]) qb.add_where(q, '%(pk)s = {%(pk)s}' % { 'pk': __fields__[0] }) qb.add_params(q, task) cursor = raw_query(*qb.to_sql(q), commit=True) if not cursor.rowcount: raise RuntimeError('No tasks updated.') return task
def get_user_by_id(user_id): user_cached = cache.load(__cache_key__ % user_id) if user_cached: return user_cached q = qb.make('select', __table__) qb.set_columns(q, __fields__) qb.add_where(q, '%(pk)s = {%(pk)s}' % {'pk': __fields__[0]}, {__fields__[0]: user_id}) cursor = raw_query(*qb.to_sql(q)) user = make_user_from_row(cursor.fetchone()) cache.store(__cache_key__ % user_id, user, __cache_ttl__) return user
def create_transaction(task): q = qb.make('insert', __table__) qb.add_values(q, [(field, '{%s}' % field) for field in __fields__[1:]]) if task[__fields__[0]]: qb.add_values(q, (__fields__[0], '{' + __fields__[0] + '}')) qb.add_params(q, task) cursor = raw_query(*qb.to_sql(q), commit=True) if not cursor.rowcount: raise RuntimeError('No transaction created.') task[__fields__[0]] = cursor.lastrowid return task
def select_transactions(query): if isinstance(query, dict): qb.set_table(query, __table__) qb.set_columns(query, __fields__) query, params = qb.to_sql(query) else: query, params = query, {} cursor = raw_query(query, params) while True: row = cursor.fetchone() if row is None: return yield make_transaction_from_row(row)
def create_user(user): q = qb.make('insert', __table__) qb.set_ignore_mode(q, True) qb.add_values(q, [(field, '{' + field + '}') for field in __fields__[1:]]) if user[__fields__[0]]: qb.add_values(q, (__fields__[0], '{' + __fields__[0] + '}')) qb.add_params(q, user) cursor = raw_query(*qb.to_sql(q), commit=True) if not cursor.rowcount: raise RuntimeError('No users created.') user[__fields__[0]] = cursor.lastrowid cache.store(__cache_key__ % user['id'], user, __cache_ttl__) return user