def get_sites_from_db(session, page, limit, search_text=None): """ Query the database for sites, it will cache the query to redis if possible """ query = session.query(Site) if search_text: like_format = '%' + search_text + '%' query = query.filter( or_( Site.url.like(like_format), Site.description.like(like_format), )) query = query.options(FromCache()) if limit: query = query.limit(limit) if page and limit: offset = page * limit query = query.offset(offset) return query
def get_users_from_db(session, page, limit, search_text=None): """ This queries the database for the user and his profile, it will cache the query to redis if possible """ query = session.query(User) query = query.options(joinedload('profile')) if search_text: like_format = '%' + search_text + '%' query = query.filter( and_( or_(User.username.like(like_format), User.email.like(like_format), UserProfile.first_name.like(like_format), UserProfile.last_name.like(like_format)), UserProfile.user_pk == User.pk)) query = query.options(FromCache()) query = query.options(RelationshipCache(User.profile)) if limit: query = query.limit(limit) if page and limit: offset = page * limit query = query.offset(offset) users = query.all() return users
def get_site_by_pk(session, site_pk, from_cache=True): query = session.query(Site).filter(Site.pk == site_pk) if from_cache: query = query.options(FromCache()) site = query.one() return site
def get_user_by_username(session, username, with_profile=True, from_cache=True): query = session.query(User).filter(User.username == username) if with_profile: query = query.options(joinedload('profile')) if from_cache: query = query.options(FromCache()) query = query.options(RelationshipCache(User.profile)) user = query.one() return user