|
1 | 1 | import type { H3EventContext } from "h3"; |
2 | 2 | import type { Cursor, WorkflowData, WebhookDebugData } from "../types"; |
| 3 | +import type { Storage } from "unstorage"; |
3 | 4 | import { createStorage, joinKeys, prefixStorage } from "unstorage"; |
4 | 5 | import cloudflareR2BindingDriver from "unstorage/drivers/cloudflare-r2-binding"; |
5 | 6 | import { getR2Binding } from "unstorage/drivers/utils/cloudflare"; |
@@ -48,7 +49,7 @@ export async function getItemStream( |
48 | 49 | export function useBucket(event: Event) { |
49 | 50 | const binding = useBinding(event); |
50 | 51 |
|
51 | | - return createStorage<Binary>({ |
| 52 | + return createStorage({ |
52 | 53 | driver: cloudflareR2BindingDriver({ |
53 | 54 | base: useBucket.key, |
54 | 55 | binding, |
@@ -102,10 +103,30 @@ useDownloadedAtBucket.base = joinKeys( |
102 | 103 | useDownloadedAtBucket.key, |
103 | 104 | ); |
104 | 105 |
|
105 | | -export function usePullRequestNumbersBucket(event: Event) { |
| 106 | +export function usePullRequestNumbersBucket(event: Event): Storage<number> { |
106 | 107 | const storage = useBucket(event); |
107 | | - // TODO: this is a huge mistake, we should use usePullRequestNumbersBucket.key instead of useDownloadedAtBucket.key |
108 | | - return prefixStorage<number>(storage, useDownloadedAtBucket.key); |
| 108 | + const newStorage = prefixStorage<number>( |
| 109 | + storage, |
| 110 | + usePullRequestNumbersBucket.key, |
| 111 | + ); |
| 112 | + const oldStorage = prefixStorage<number>(storage, useDownloadedAtBucket.key); |
| 113 | + |
| 114 | + return { |
| 115 | + async hasItem(key: string) { |
| 116 | + return (await newStorage.hasItem(key)) || (await oldStorage.hasItem(key)); |
| 117 | + }, |
| 118 | + async getItem(key: string) { |
| 119 | + const newValue = await newStorage.getItem(key); |
| 120 | + return newValue !== null ? newValue : await oldStorage.getItem(key); |
| 121 | + }, |
| 122 | + async setItem(key: string, value: number) { |
| 123 | + await newStorage.setItem(key, value); |
| 124 | + }, |
| 125 | + async removeItem(key: string) { |
| 126 | + await newStorage.removeItem(key); |
| 127 | + await oldStorage.removeItem(key); |
| 128 | + }, |
| 129 | + }; |
109 | 130 | } |
110 | 131 | usePullRequestNumbersBucket.key = "pr-number"; |
111 | 132 | usePullRequestNumbersBucket.base = joinKeys( |
|
0 commit comments