mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 07:20:12 +01:00
parent
23860b1ee8
commit
66b444e2b0
4 changed files with 321 additions and 64 deletions
|
|
@ -147,13 +147,31 @@ Meteor.publish('globalSearch', function(sessionId, params, text) {
|
|||
check(params, Object);
|
||||
check(text, String);
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('queryParams:', params);
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('globalSearch publication called with:', { sessionId, params, text });
|
||||
}
|
||||
|
||||
const ret = findCards(sessionId, buildQuery(new QueryParams(params, text)));
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('globalSearch publication returning:', ret);
|
||||
}
|
||||
return ret;
|
||||
});
|
||||
|
||||
Meteor.publish('sessionData', function(sessionId) {
|
||||
check(sessionId, String);
|
||||
const userId = Meteor.userId();
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('sessionData publication called with:', { sessionId, userId });
|
||||
}
|
||||
|
||||
const cursor = SessionData.find({ userId, sessionId });
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('sessionData publication returning cursor with count:', cursor.count());
|
||||
}
|
||||
return cursor;
|
||||
});
|
||||
|
||||
function buildSelector(queryParams) {
|
||||
const userId = Meteor.userId();
|
||||
|
||||
|
|
@ -261,8 +279,12 @@ function buildSelector(queryParams) {
|
|||
selector.archived = false;
|
||||
}
|
||||
} else {
|
||||
const userBoardIds = Boards.userBoardIds(userId, null, boardsSelector);
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('buildSelector - userBoardIds:', userBoardIds);
|
||||
}
|
||||
selector.boardId = {
|
||||
$in: Boards.userBoardIds(userId, null, boardsSelector),
|
||||
$in: userBoardIds,
|
||||
};
|
||||
}
|
||||
if (endAt !== null) {
|
||||
|
|
@ -537,8 +559,9 @@ function buildSelector(queryParams) {
|
|||
}
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('cards selector:', JSON.stringify(selector, null, 2));
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('buildSelector - final selector:', JSON.stringify(selector, null, 2));
|
||||
}
|
||||
|
||||
const query = new Query();
|
||||
query.selector = selector;
|
||||
|
|
@ -702,14 +725,17 @@ function findCards(sessionId, query) {
|
|||
const userId = Meteor.userId();
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('selector:', query.selector);
|
||||
// console.log('selector.$and:', query.selector.$and);
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('projection:', query.projection);
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - userId:', userId);
|
||||
console.log('findCards - selector:', JSON.stringify(query.selector, null, 2));
|
||||
console.log('findCards - selector.$and:', query.selector.$and);
|
||||
console.log('findCards - projection:', query.projection);
|
||||
}
|
||||
|
||||
const cards = ReactiveCache.getCards(query.selector, query.projection, true);
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('count:', cards.count());
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - cards count:', cards ? cards.count() : 0);
|
||||
}
|
||||
|
||||
const update = {
|
||||
$set: {
|
||||
|
|
@ -720,7 +746,8 @@ function findCards(sessionId, query) {
|
|||
selector: SessionData.pickle(query.selector),
|
||||
projection: SessionData.pickle(query.projection),
|
||||
errors: query.errors(),
|
||||
debug: query.getQueryParams().getPredicate(OPERATOR_DEBUG)
|
||||
debug: query.getQueryParams().getPredicate(OPERATOR_DEBUG),
|
||||
modifiedAt: new Date()
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -736,13 +763,22 @@ function findCards(sessionId, query) {
|
|||
update.$set.resultsCount = update.$set.cards.length;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('sessionId:', sessionId);
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('userId:', userId);
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('update:', update);
|
||||
SessionData.upsert({ userId, sessionId }, update);
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - sessionId:', sessionId);
|
||||
console.log('findCards - userId:', userId);
|
||||
console.log('findCards - update:', JSON.stringify(update, null, 2));
|
||||
}
|
||||
const upsertResult = SessionData.upsert({ userId, sessionId }, update);
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - upsertResult:', upsertResult);
|
||||
}
|
||||
|
||||
// Check if the session data was actually stored
|
||||
const storedSessionData = SessionData.findOne({ userId, sessionId });
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - stored session data:', storedSessionData);
|
||||
console.log('findCards - stored session data count:', storedSessionData ? 1 : 0);
|
||||
}
|
||||
|
||||
// remove old session data
|
||||
SessionData.remove({
|
||||
|
|
@ -793,6 +829,21 @@ function findCards(sessionId, query) {
|
|||
type: 1,
|
||||
};
|
||||
|
||||
// Add a small delay to ensure the session data is committed to the database
|
||||
Meteor.setTimeout(() => {
|
||||
const sessionDataCursor = SessionData.find({ userId, sessionId });
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - publishing session data cursor (after delay):', sessionDataCursor);
|
||||
console.log('findCards - session data count (after delay):', sessionDataCursor.count());
|
||||
}
|
||||
}, 100);
|
||||
|
||||
const sessionDataCursor = SessionData.find({ userId, sessionId });
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - publishing session data cursor:', sessionDataCursor);
|
||||
console.log('findCards - session data count:', sessionDataCursor.count());
|
||||
}
|
||||
|
||||
return [
|
||||
cards,
|
||||
ReactiveCache.getBoards(
|
||||
|
|
@ -812,9 +863,14 @@ function findCards(sessionId, query) {
|
|||
ReactiveCache.getChecklistItems({ cardId: { $in: cards.map(c => c._id) } }, {}, true),
|
||||
ReactiveCache.getAttachments({ 'meta.cardId': { $in: cards.map(c => c._id) } }, {}, true).cursor,
|
||||
ReactiveCache.getCardComments({ cardId: { $in: cards.map(c => c._id) } }, {}, true),
|
||||
SessionData.find({ userId, sessionId }),
|
||||
sessionDataCursor,
|
||||
];
|
||||
}
|
||||
|
||||
return [SessionData.find({ userId, sessionId })];
|
||||
const sessionDataCursor = SessionData.find({ userId, sessionId });
|
||||
if (process.env.DEBUG === 'true') {
|
||||
console.log('findCards - publishing session data cursor (no cards):', sessionDataCursor);
|
||||
console.log('findCards - session data count (no cards):', sessionDataCursor.count());
|
||||
}
|
||||
return [sessionDataCursor];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue