mirror of
https://github.com/logos-messaging/OpChan.git
synced 2026-01-07 15:23:05 +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() {
|
public async queryStore() {
|
||||||
const result: (CellMessage | PostMessage | CommentMessage | VoteMessage)[] = [];
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user