Add parameter to optimize repository.query, auto-connect when sending, optimize storage adapters

This commit is contained in:
Jon Staab
2025-01-02 09:27:35 -08:00
parent dab93d9b56
commit c1e9d99ad9
6 changed files with 83 additions and 40 deletions
+8 -2
View File
@@ -111,9 +111,13 @@ export class Repository<E extends HashedEvent = TrustedEvent> extends Emitter {
}
}
query = (filters: Filter[], {includeDeleted = false} = {}) => {
query = (filters: Filter[], {includeDeleted = false, shouldSort = true} = {}) => {
const result: E[][] = []
for (let filter of filters) {
if (filter.limit !== undefined && !shouldSort) {
throw new Error("Unable to skip sorting if limit is defined")
}
let events: E[] = Array.from(this.eventsById.values())
if (filter.ids) {
@@ -146,8 +150,10 @@ export class Repository<E extends HashedEvent = TrustedEvent> extends Emitter {
}
}
const sorted = shouldSort ? sortBy((e: E) => -e.created_at, events) : events
const chunk: E[] = []
for (const event of sortBy((e: E) => -e.created_at, events)) {
for (const event of sorted) {
if (filter.limit && chunk.length >= filter.limit) {
break
}