-
Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
The following code:
async function query(queryString: QueryString): Promise<Question[]> {
const store = asyncLocalStorage.getStore() as alStoreType;
const loggedinUserId = store?.loggedinUserId;
const { language, level, searchTerm, isMarkedToBeRevised, limit, page, isRevised } = queryString;
const isMarkedToBeRevisedBoolean = convertQueryParamsToBoolean(isMarkedToBeRevised);
const isRevisedBoolean = convertQueryParamsToBoolean(isRevised);
const session = ravenStore.openSession();
const query = session.query<Question>({ collection: COLLECTION_NAME });
if (limit) query.take(Number(limit));
if (searchTerm) query.search("question", searchTerm);
const skip = Number(page) * Number(limit);
if (skip) query.skip(skip);
if (!loggedinUserId) query.randomOrdering();
else {
const userCorrectAnswersIds = await session
.query<UserCorrectAnswer>({
collection: "UserCorrectAnswers",
})
.selectFields(["questionId"])
.whereEquals("userId", loggedinUserId)
.all();
const docIdsToFilter = userCorrectAnswersIds.map(id =>
setIdToCollectionName(COLLECTION_NAME, id as unknown as string)
);
query.not().whereIn("id()", docIdsToFilter);
}
const questions = await query.all();
for (const question of questions) question.id = trimCollectionNameFromId(question.id);
return questions;
}
Will generate a query with search("question", $p0) or not where("id()", ...)
Should be and not...
Metadata
Metadata
Assignees
Labels
No labels