(
docs: ReadonlyArray<MessageDoc>,
activeRequestIds: ReadonlySet<string>,
queryReplies: (
query: string,
parameters: ReadonlyArray<CosmosParameter>
) => Effect.Effect<Array<ReplyDoc>, E>
)
| 779 | } |
| 780 | |
| 781 | const lastRepliesById = <E>( |
| 782 | docs: ReadonlyArray<MessageDoc>, |
| 783 | activeRequestIds: ReadonlySet<string>, |
| 784 | queryReplies: ( |
| 785 | query: string, |
| 786 | parameters: ReadonlyArray<CosmosParameter> |
| 787 | ) => Effect.Effect<Array<ReplyDoc>, E> |
| 788 | ) => { |
| 789 | const replyIds = Array.from( |
| 790 | new Set(docs |
| 791 | .flatMap((doc) => activeRequestIds.has(doc.requestId) || doc.lastReplyId === null ? [] : [doc.lastReplyId])) |
| 792 | ) |
| 793 | if (!Arr.isArrayNonEmpty(replyIds)) return Effect.succeed(new Map<string, Reply.Encoded>()) |
| 794 | return queryReplies( |
| 795 | "SELECT * FROM c WHERE c.type = 'reply' AND ARRAY_CONTAINS(@replyIds, c.rowid)", |
| 796 | [{ name: "@replyIds", value: replyIds }] |
| 797 | ) |
| 798 | .pipe(Effect.map((replies) => new Map(replies.map((reply) => [reply.rowid, replyFromDoc(reply)])))) |
| 799 | } |
| 800 | |
| 801 | export const makeRunnerStorage = Effect.fnUntraced(function*(options?: { |
| 802 | readonly prefix?: string | undefined |
no test coverage detected
searching dependent graphs…