mirror of
https://github.com/logos-messaging/OpChan.git
synced 2026-01-03 21:33:09 +00:00
feat(store): add query options and fallback for store queries to improve reliability and limit results
Signed-off-by: Ashis Kumar Naik <ashishami2002@gmail.com>
This commit is contained in:
parent
c9e53ca285
commit
7d278d6fc2
@ -12,16 +12,56 @@ class StoreManager {
|
||||
|
||||
public async queryStore() {
|
||||
const result: (CellMessage | PostMessage | CommentMessage | VoteMessage)[] = [];
|
||||
|
||||
await this.node.store.queryWithOrderedCallback(
|
||||
Object.values(decoders),
|
||||
(message: IDecodedMessage) => {
|
||||
const { payload} = message;
|
||||
const decodedMessage = decodeMessage(payload);
|
||||
result.push(decodedMessage);
|
||||
}
|
||||
);
|
||||
|
||||
try {
|
||||
// Add query options to prevent database overload
|
||||
const queryOptions = {
|
||||
paginationLimit: 50, // Correct parameter name for page size
|
||||
timeStart: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000), // Last 7 days
|
||||
timeEnd: new Date(), // Current time
|
||||
paginationForward: false, // false = newest first
|
||||
includeData: true // Include full message data
|
||||
};
|
||||
|
||||
// Try with query options first, fallback to no options if it fails
|
||||
try {
|
||||
await this.node.store.queryWithOrderedCallback(
|
||||
Object.values(decoders),
|
||||
(message: IDecodedMessage) => {
|
||||
const { payload } = message;
|
||||
const decodedMessage = decodeMessage(payload);
|
||||
result.push(decodedMessage);
|
||||
},
|
||||
queryOptions
|
||||
);
|
||||
} catch (queryError) {
|
||||
console.warn("Query with options failed, trying without options:", queryError);
|
||||
// Fallback: query without options but add manual limit
|
||||
let messageCount = 0;
|
||||
const MAX_MESSAGES = 100;
|
||||
|
||||
await this.node.store.queryWithOrderedCallback(
|
||||
Object.values(decoders),
|
||||
(message: IDecodedMessage) => {
|
||||
if (messageCount >= MAX_MESSAGES) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { payload } = message;
|
||||
const decodedMessage = decodeMessage(payload);
|
||||
result.push(decodedMessage);
|
||||
messageCount++;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if (result.length > 0) {
|
||||
console.log(`Store query completed. Found ${result.length} messages`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Store query failed:", error);
|
||||
throw error;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user