MojErr MojDbSearchCursor::load() { // pull unique ids from index ObjectSet ids; MojErr err = loadIds(ids); MojErrCheck(err); // load objects into memory err = loadObjects(ids); MojErrCheck(err); // sort results if (!m_orderProp.empty()) { err = sort(); MojErrCheck(err); } // distinct if (!m_distinct.empty()) { distinct(); } // reverse for desc if (m_query.desc()) { err = m_items.reverse(); MojErrCheck(err); } // set limit and pos if (m_limit >= m_items.size()) { m_limitPos = m_items.end(); } else { m_limitPos = m_items.begin() + m_limit; } m_pos = m_items.begin(); return MojErrNone; }
MojErr MojDbSearchCursor::load() { LOG_TRACE("Entering function %s", __FUNCTION__); // pull unique ids from index ObjectSet ids; MojErr err = loadIds(ids); MojErrCheck(err); // load objects into memory err = loadObjects(ids); MojErrCheck(err); // sort results if (!m_orderProp.empty()) { err = sort(); MojErrCheck(err); } // distinct if (!m_distinct.empty()) { distinct(); } // reverse for desc if (m_query.desc()) { err = m_items.reverse(); MojErrCheck(err); } // next page if (!m_page.empty()) { err = setPagePosition(); MojErrCheck(err); } else { // set begin/last position. m_pos = m_items.begin(); if (m_limit >= m_items.size()) { m_limitPos = m_items.end(); } else { // if item size is bigger than limit, set next page. m_limitPos = m_items.begin() + m_limit; MojDbStorageItem* nextItem = m_limitPos->get(); const MojObject nextId = nextItem->id(); m_page.fromObject(nextId); } } // set remainder count m_count = m_items.end() - m_pos; return MojErrNone; }