示例#1
0
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
示例#4
0
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
示例#6
0
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
示例#7
0
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
示例#8
0
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)
示例#9
0
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