@filoz/repair-cli 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +3 -3
- package/dist/src/api.d.ts +35 -0
- package/dist/src/api.d.ts.map +1 -0
- package/dist/src/api.js +118 -0
- package/dist/src/api.js.map +1 -0
- package/dist/src/cli.js +2 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/datasets.d.ts +3 -5
- package/dist/src/commands/datasets.d.ts.map +1 -1
- package/dist/src/commands/datasets.js +24 -33
- package/dist/src/commands/datasets.js.map +1 -1
- package/dist/src/commands/providers.d.ts +3 -5
- package/dist/src/commands/providers.d.ts.map +1 -1
- package/dist/src/commands/providers.js +32 -33
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/repair.d.ts +3 -5
- package/dist/src/commands/repair.d.ts.map +1 -1
- package/dist/src/commands/repair.js +3 -3
- package/dist/src/commands/repair.js.map +1 -1
- package/dist/src/commands/replicate.d.ts +3 -5
- package/dist/src/commands/replicate.d.ts.map +1 -1
- package/dist/src/commands/replicate.js +3 -3
- package/dist/src/commands/replicate.js.map +1 -1
- package/dist/src/commands/second-copy.d.ts +23 -0
- package/dist/src/commands/second-copy.d.ts.map +1 -0
- package/dist/src/commands/second-copy.js +175 -0
- package/dist/src/commands/second-copy.js.map +1 -0
- package/dist/src/commands/session-key.d.ts +3 -5
- package/dist/src/commands/session-key.d.ts.map +1 -1
- package/dist/src/commands/setup.d.ts.map +1 -1
- package/dist/src/commands/setup.js +11 -32
- package/dist/src/commands/setup.js.map +1 -1
- package/dist/src/commands/wallet.d.ts +3 -5
- package/dist/src/commands/wallet.d.ts.map +1 -1
- package/dist/src/db/dedupe-cids.d.ts +6 -7
- package/dist/src/db/dedupe-cids.d.ts.map +1 -1
- package/dist/src/db/dedupe-cids.js +2 -14
- package/dist/src/db/dedupe-cids.js.map +1 -1
- package/dist/src/db/find-repair-dataset.d.ts +3 -3
- package/dist/src/db/find-repair-dataset.d.ts.map +1 -1
- package/dist/src/db/find-repair-dataset.js +16 -14
- package/dist/src/db/find-repair-dataset.js.map +1 -1
- package/dist/src/db/get-active-data-set-ids.d.ts +9 -0
- package/dist/src/db/get-active-data-set-ids.d.ts.map +1 -0
- package/dist/src/db/get-active-data-set-ids.js +9 -0
- package/dist/src/db/get-active-data-set-ids.js.map +1 -0
- package/dist/src/db/get-alternate-provider-urls.d.ts +6 -0
- package/dist/src/db/get-alternate-provider-urls.d.ts.map +1 -0
- package/dist/src/db/get-alternate-provider-urls.js +24 -0
- package/dist/src/db/get-alternate-provider-urls.js.map +1 -0
- package/dist/src/db/get-pieces.d.ts +8 -27
- package/dist/src/db/get-pieces.d.ts.map +1 -1
- package/dist/src/db/get-pieces.js +44 -97
- package/dist/src/db/get-pieces.js.map +1 -1
- package/dist/src/db/get-repair-provider.d.ts +2 -2
- package/dist/src/db/get-repair-provider.d.ts.map +1 -1
- package/dist/src/db/get-repair-provider.js +8 -20
- package/dist/src/db/get-repair-provider.js.map +1 -1
- package/dist/src/db/repair-create.d.ts.map +1 -1
- package/dist/src/db/repair-create.js +5 -3
- package/dist/src/db/repair-create.js.map +1 -1
- package/dist/src/db/replicate-create.d.ts.map +1 -1
- package/dist/src/db/replicate-create.js +15 -21
- package/dist/src/db/replicate-create.js.map +1 -1
- package/dist/src/db/second-copy-create.d.ts +10 -0
- package/dist/src/db/second-copy-create.d.ts.map +1 -0
- package/dist/src/db/second-copy-create.js +104 -0
- package/dist/src/db/second-copy-create.js.map +1 -0
- package/dist/src/local-schema.d.ts +41 -1
- package/dist/src/local-schema.d.ts.map +1 -1
- package/dist/src/local-schema.js +2 -0
- package/dist/src/local-schema.js.map +1 -1
- package/dist/src/middleware.d.ts +7 -11
- package/dist/src/middleware.d.ts.map +1 -1
- package/dist/src/middleware.js +6 -10
- package/dist/src/middleware.js.map +1 -1
- package/dist/src/pipeline/add-pieces.d.ts +3 -3
- package/dist/src/pipeline/add-pieces.d.ts.map +1 -1
- package/dist/src/pipeline/add-pieces.js +15 -7
- package/dist/src/pipeline/add-pieces.js.map +1 -1
- package/dist/src/pipeline/create-datasets.d.ts +4 -4
- package/dist/src/pipeline/create-datasets.d.ts.map +1 -1
- package/dist/src/pipeline/create-datasets.js +7 -14
- package/dist/src/pipeline/create-datasets.js.map +1 -1
- package/dist/src/types.d.ts +6 -7
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +7 -10
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +21 -2
- package/dist/src/utils.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +98 -13
- package/src/api.ts +220 -0
- package/src/cli.ts +2 -0
- package/src/commands/datasets.ts +24 -36
- package/src/commands/providers.ts +34 -42
- package/src/commands/repair.ts +3 -3
- package/src/commands/replicate.ts +3 -3
- package/src/commands/second-copy.ts +187 -0
- package/src/commands/setup.ts +12 -35
- package/src/db/dedupe-cids.ts +7 -24
- package/src/db/find-repair-dataset.ts +17 -28
- package/src/db/get-active-data-set-ids.ts +29 -0
- package/src/db/get-alternate-provider-urls.ts +43 -0
- package/src/db/get-pieces.ts +82 -214
- package/src/db/get-repair-provider.ts +10 -30
- package/src/db/repair-create.ts +5 -3
- package/src/db/replicate-create.ts +15 -21
- package/src/db/second-copy-create.ts +147 -0
- package/src/local-schema.ts +3 -0
- package/src/middleware.ts +7 -11
- package/src/pipeline/add-pieces.ts +21 -11
- package/src/pipeline/create-datasets.ts +9 -29
- package/src/types.ts +9 -7
- package/src/utils.ts +22 -4
- package/dist/src/db/find-providers-by-cid.d.ts +0 -9
- package/dist/src/db/find-providers-by-cid.d.ts.map +0 -1
- package/dist/src/db/find-providers-by-cid.js +0 -43
- package/dist/src/db/find-providers-by-cid.js.map +0 -1
- package/dist/src/indexer-schema.d.ts +0 -549
- package/dist/src/indexer-schema.d.ts.map +0 -1
- package/dist/src/indexer-schema.js +0 -56
- package/dist/src/indexer-schema.js.map +0 -1
- package/src/db/find-providers-by-cid.ts +0 -70
- package/src/indexer-schema.ts +0 -77
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-repair-dataset.js","sourceRoot":"","sources":["../../../src/db/find-repair-dataset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-repair-dataset.js","sourceRoot":"","sources":["../../../src/db/find-repair-dataset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAexC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,GAAG,EACH,UAAU,EACV,KAAK,EACL,MAAM,GACmB;IACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE;QACvC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;QAC1B,UAAU;QACV,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;KACf,CAAC,CAAA;IAEF,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAAE,SAAQ;QACnG,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,SAAS,IAAI,IAAI,IAAI,EAAE,GAAG,SAAS;YAAE,SAAS,GAAG,EAAE,CAAA;IACzD,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DataSet } from '../api.ts';
|
|
2
|
+
import type { IndexerApi } from '../types.ts';
|
|
3
|
+
export declare function isDataSetActiveAt(dataSet: Pick<DataSet, 'deleted' | 'pdpEndEpoch'>, blockNumber: bigint): boolean;
|
|
4
|
+
export declare function getActiveDataSetIds({ api, providerId, blockNumber, }: {
|
|
5
|
+
api: IndexerApi;
|
|
6
|
+
providerId: bigint;
|
|
7
|
+
blockNumber: bigint;
|
|
8
|
+
}): Promise<Set<string>>;
|
|
9
|
+
//# sourceMappingURL=get-active-data-set-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-active-data-set-ids.d.ts","sourceRoot":"","sources":["../../../src/db/get-active-data-set-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,WAAW,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAO7C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,aAAa,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEjH;AAKD,wBAAsB,mBAAmB,CAAC,EACxC,GAAG,EACH,UAAU,EACV,WAAW,GACZ,EAAE;IACD,GAAG,EAAE,UAAU,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAKvB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { listDataSets } from "../api.js";
|
|
2
|
+
export function isDataSetActiveAt(dataSet, blockNumber) {
|
|
3
|
+
return !dataSet.deleted && (dataSet.pdpEndEpoch == null || BigInt(dataSet.pdpEndEpoch) > blockNumber);
|
|
4
|
+
}
|
|
5
|
+
export async function getActiveDataSetIds({ api, providerId, blockNumber, }) {
|
|
6
|
+
const dataSets = await listDataSets(api, { providerId, deleted: false });
|
|
7
|
+
return new Set(dataSets.filter((dataSet) => isDataSetActiveAt(dataSet, blockNumber)).map((dataSet) => dataSet.dataSetId));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=get-active-data-set-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-active-data-set-ids.js","sourceRoot":"","sources":["../../../src/db/get-active-data-set-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,MAAM,WAAW,CAAA;AAQtD,MAAM,UAAU,iBAAiB,CAAC,OAAiD,EAAE,WAAmB;IACtG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAA;AACvG,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EACxC,GAAG,EACH,UAAU,EACV,WAAW,GAKZ;IACC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IACxE,OAAO,IAAI,GAAG,CACZ,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAC1G,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-alternate-provider-urls.d.ts","sourceRoot":"","sources":["../../../src/db/get-alternate-provider-urls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAoB7C,wBAAsB,wBAAwB,CAAC,EAC7C,GAAG,EACH,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,UAAU,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;CACzB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAepB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { listProviders } from "../api.js";
|
|
2
|
+
function compareProviders(a, b) {
|
|
3
|
+
if (a.endorsed !== b.endorsed)
|
|
4
|
+
return a.endorsed ? -1 : 1;
|
|
5
|
+
if (a.approved !== b.approved)
|
|
6
|
+
return a.approved ? -1 : 1;
|
|
7
|
+
const x = BigInt(a.providerId);
|
|
8
|
+
const y = BigInt(b.providerId);
|
|
9
|
+
return x < y ? -1 : x > y ? 1 : 0;
|
|
10
|
+
}
|
|
11
|
+
export async function getAlternateProviderUrls({ api, repairProviderId, }) {
|
|
12
|
+
const providers = await listProviders(api);
|
|
13
|
+
const repairProviderUrl = providers.find((provider) => BigInt(provider.providerId) === repairProviderId)?.serviceUrl;
|
|
14
|
+
const urls = providers
|
|
15
|
+
.filter((provider) => (provider.approved || provider.endorsed) &&
|
|
16
|
+
provider.serviceUrl &&
|
|
17
|
+
BigInt(provider.providerId) !== repairProviderId)
|
|
18
|
+
.sort(compareProviders)
|
|
19
|
+
.map((provider) => provider.serviceUrl);
|
|
20
|
+
if (repairProviderUrl)
|
|
21
|
+
urls.push(repairProviderUrl);
|
|
22
|
+
return urls;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=get-alternate-provider-urls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-alternate-provider-urls.js","sourceRoot":"","sources":["../../../src/db/get-alternate-provider-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,WAAW,CAAA;AAIxD,SAAS,gBAAgB,CAAC,CAAW,EAAE,CAAW;IAChD,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAC7C,GAAG,EACH,gBAAgB,GAIjB;IACC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IAC1C,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,gBAAgB,CAAC,EAAE,UAAU,CAAA;IACpH,MAAM,IAAI,GAAG,SAAS;SACnB,MAAM,CACL,CAAC,QAAQ,EAAE,EAAE,CACX,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;QACxC,QAAQ,CAAC,UAAU;QACnB,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,gBAAgB,CACnD;SACA,IAAI,CAAC,gBAAgB,CAAC;SACtB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAoB,CAAC,CAAA;IAEnD,IAAI,iBAAiB;QAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACnD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -1,39 +1,20 @@
|
|
|
1
1
|
import type { OperationInsert } from '../local-schema.ts';
|
|
2
|
-
import type {
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
indexerDb: IndexerDatabase;
|
|
2
|
+
import type { IndexerApi } from '../types.ts';
|
|
3
|
+
export type ForEachPiecesPageOptions = {
|
|
4
|
+
api: IndexerApi;
|
|
6
5
|
providerId: bigint;
|
|
7
6
|
repairId: number;
|
|
8
7
|
blockNumber: bigint;
|
|
9
|
-
limit?: number;
|
|
10
|
-
offset?: number;
|
|
11
|
-
seenCids?: Set<string>;
|
|
12
8
|
};
|
|
13
|
-
export type
|
|
14
|
-
|
|
15
|
-
hasMore: boolean;
|
|
16
|
-
nextOffset: number;
|
|
17
|
-
seenCids: Set<string>;
|
|
18
|
-
};
|
|
19
|
-
export type ForEachPiecesPageOptions = Omit<GetPiecesPageOptions, 'offset' | 'seenCids'>;
|
|
20
|
-
export type GetDataSetPiecesPageOptions = {
|
|
21
|
-
indexerDb: IndexerDatabase;
|
|
9
|
+
export type ForEachDataSetPiecesPageOptions = {
|
|
10
|
+
api: IndexerApi;
|
|
22
11
|
dataSetId: bigint;
|
|
23
12
|
repairId: number;
|
|
24
13
|
sourceProviderUrl: string;
|
|
25
|
-
limit?: number;
|
|
26
|
-
offset?: number;
|
|
27
14
|
};
|
|
28
|
-
export type
|
|
15
|
+
export type PiecesPage = {
|
|
29
16
|
operations: OperationInsert[];
|
|
30
|
-
hasMore: boolean;
|
|
31
|
-
nextOffset: number;
|
|
32
17
|
};
|
|
33
|
-
export
|
|
34
|
-
export declare function
|
|
35
|
-
export declare function getPiecesPage({ indexerDb, providerId, repairId, blockNumber, limit, offset, seenCids, }: GetPiecesPageOptions): Promise<GetPiecesPageResult>;
|
|
36
|
-
export declare function getDataSetPiecesPage({ indexerDb, dataSetId, repairId, sourceProviderUrl, limit, offset, }: GetDataSetPiecesPageOptions): Promise<GetDataSetPiecesPageResult>;
|
|
37
|
-
export declare function forEachPiecesPage(options: ForEachPiecesPageOptions, onPage: (page: GetPiecesPageResult) => Promise<void>): Promise<void>;
|
|
38
|
-
export declare function forEachDataSetPiecesPage(options: ForEachDataSetPiecesPageOptions, onPage: (page: GetDataSetPiecesPageResult) => Promise<void>): Promise<void>;
|
|
18
|
+
export declare function forEachPiecesPage({ api, providerId, repairId, blockNumber }: ForEachPiecesPageOptions, onPage: (page: PiecesPage) => Promise<void>): Promise<void>;
|
|
19
|
+
export declare function forEachDataSetPiecesPage({ api, dataSetId, repairId, sourceProviderUrl }: ForEachDataSetPiecesPageOptions, onPage: (page: PiecesPage) => Promise<void>): Promise<void>;
|
|
39
20
|
//# sourceMappingURL=get-pieces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-pieces.d.ts","sourceRoot":"","sources":["../../../src/db/get-pieces.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"get-pieces.d.ts","sourceRoot":"","sources":["../../../src/db/get-pieces.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAK7C,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,EAAE,UAAU,CAAA;IAEf,UAAU,EAAE,MAAM,CAAA;IAElB,QAAQ,EAAE,MAAM,CAAA;IAEhB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAGD,MAAM,MAAM,+BAA+B,GAAG;IAC5C,GAAG,EAAE,UAAU,CAAA;IAEf,SAAS,EAAE,MAAM,CAAA;IAEjB,QAAQ,EAAE,MAAM,CAAA;IAEhB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAGD,MAAM,MAAM,UAAU,GAAG;IAEvB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B,CAAA;AAmED,wBAAsB,iBAAiB,CACrC,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,wBAAwB,EACpE,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAiBf;AAYD,wBAAsB,wBAAwB,CAC5C,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,+BAA+B,EAChF,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -1,45 +1,17 @@
|
|
|
1
1
|
import * as Piece from '@filoz/synapse-core/piece';
|
|
2
|
-
import { and, asc, eq, isNull, lte, or } from 'drizzle-orm';
|
|
3
2
|
import pMap from 'p-map';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export async function getPiecesPage({ indexerDb, providerId, repairId, blockNumber, limit = DEFAULT_PIECES_PAGE_SIZE, offset = 0, seenCids = emptySeenCids(), }) {
|
|
10
|
-
const schema = indexerDb._.fullSchema;
|
|
11
|
-
const rows = await indexerDb
|
|
12
|
-
.select({
|
|
13
|
-
cid: schema.pieces.cid,
|
|
14
|
-
metadata: schema.pieces.metadata,
|
|
15
|
-
})
|
|
16
|
-
.from(schema.pieces)
|
|
17
|
-
.innerJoin(schema.dataSets, eq(schema.pieces.dataSetId, schema.dataSets.dataSetId))
|
|
18
|
-
.where(and(eq(schema.dataSets.providerId, providerId), eq(schema.dataSets.deleted, false), or(isNull(schema.dataSets.pdpEndEpoch), lte(schema.dataSets.pdpEndEpoch, blockNumber)), eq(schema.pieces.removed, false)))
|
|
19
|
-
.orderBy(asc(schema.pieces.dataSetId), asc(schema.pieces.pieceId))
|
|
20
|
-
.limit(limit)
|
|
21
|
-
.offset(offset);
|
|
3
|
+
import { listDataSetPieces, MAX_PAGE_SIZE, providerPiecePages, toStringMetadata } from "../api.js";
|
|
4
|
+
import { getActiveDataSetIds } from "./get-active-data-set-ids.js";
|
|
5
|
+
import { getAlternateProviderUrls } from "./get-alternate-provider-urls.js";
|
|
6
|
+
async function piecesToRepairOperations({ pieces, repairId, alternateProviderUrls, }) {
|
|
22
7
|
const now = Date.now();
|
|
23
|
-
|
|
24
|
-
for (const { cid, metadata } of rows) {
|
|
25
|
-
if (seenCids.has(cid))
|
|
26
|
-
continue;
|
|
27
|
-
seenCids.add(cid);
|
|
28
|
-
pieces.push({ cid, metadata });
|
|
29
|
-
}
|
|
30
|
-
const providersByCid = await findProvidersByCid({
|
|
31
|
-
indexerDb,
|
|
32
|
-
cids: pieces.map((piece) => piece.cid),
|
|
33
|
-
blockNumber,
|
|
34
|
-
});
|
|
35
|
-
const operations = await pMap(pieces, async ({ cid, metadata }) => {
|
|
36
|
-
const alternateProviders = providersByCid[cid]?.map((provider) => provider.serviceUrl) ?? [];
|
|
8
|
+
return pMap(pieces, async ({ cid, metadata }) => {
|
|
37
9
|
let skippedMessage = '';
|
|
38
10
|
let validProvider;
|
|
39
|
-
if (
|
|
40
|
-
validProvider = await Piece.findPieceOnProviders(
|
|
11
|
+
if (alternateProviderUrls.length > 0) {
|
|
12
|
+
validProvider = await Piece.findPieceOnProviders(alternateProviderUrls, Piece.from(cid));
|
|
41
13
|
if (!validProvider) {
|
|
42
|
-
skippedMessage = `
|
|
14
|
+
skippedMessage = `Piece not found on any of ${alternateProviderUrls.length} probed providers`;
|
|
43
15
|
}
|
|
44
16
|
}
|
|
45
17
|
else {
|
|
@@ -50,76 +22,51 @@ export async function getPiecesPage({ indexerDb, providerId, repairId, blockNumb
|
|
|
50
22
|
type: 'add_piece',
|
|
51
23
|
status: validProvider ? 'pending' : 'skipped',
|
|
52
24
|
cid,
|
|
53
|
-
metadata
|
|
25
|
+
metadata,
|
|
54
26
|
alternateProvider: validProvider ?? '',
|
|
55
27
|
error: validProvider ? undefined : skippedMessage,
|
|
56
28
|
createdAt: now,
|
|
57
29
|
updatedAt: now,
|
|
58
30
|
};
|
|
59
31
|
}, { concurrency: 20 });
|
|
60
|
-
return {
|
|
61
|
-
operations,
|
|
62
|
-
hasMore: rows.length === limit,
|
|
63
|
-
nextOffset: offset + rows.length,
|
|
64
|
-
seenCids,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
export async function getDataSetPiecesPage({ indexerDb, dataSetId, repairId, sourceProviderUrl, limit = DEFAULT_PIECES_PAGE_SIZE, offset = 0, }) {
|
|
68
|
-
const schema = indexerDb._.fullSchema;
|
|
69
|
-
const rows = await indexerDb
|
|
70
|
-
.select({
|
|
71
|
-
cid: schema.pieces.cid,
|
|
72
|
-
metadata: schema.pieces.metadata,
|
|
73
|
-
})
|
|
74
|
-
.from(schema.pieces)
|
|
75
|
-
.where(and(eq(schema.pieces.dataSetId, dataSetId), eq(schema.pieces.removed, false)))
|
|
76
|
-
.orderBy(asc(schema.pieces.pieceId))
|
|
77
|
-
.limit(limit)
|
|
78
|
-
.offset(offset);
|
|
79
|
-
const now = Date.now();
|
|
80
|
-
const operations = rows.map(({ cid, metadata }) => ({
|
|
81
|
-
repairId,
|
|
82
|
-
type: 'add_piece',
|
|
83
|
-
status: 'pending',
|
|
84
|
-
cid,
|
|
85
|
-
metadata: metadata ?? {},
|
|
86
|
-
alternateProvider: sourceProviderUrl,
|
|
87
|
-
createdAt: now,
|
|
88
|
-
updatedAt: now,
|
|
89
|
-
}));
|
|
90
|
-
return {
|
|
91
|
-
operations,
|
|
92
|
-
hasMore: rows.length === limit,
|
|
93
|
-
nextOffset: offset + rows.length,
|
|
94
|
-
};
|
|
95
32
|
}
|
|
96
|
-
export async function forEachPiecesPage(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
33
|
+
export async function forEachPiecesPage({ api, providerId, repairId, blockNumber }, onPage) {
|
|
34
|
+
const activeDataSetIds = await getActiveDataSetIds({ api, providerId, blockNumber });
|
|
35
|
+
const alternateProviderUrls = await getAlternateProviderUrls({ api, repairProviderId: providerId });
|
|
36
|
+
const seenCids = new Set();
|
|
37
|
+
for await (const rows of providerPiecePages(api, providerId, { removed: false })) {
|
|
38
|
+
const pieces = [];
|
|
39
|
+
for (const { cid, metadata, dataSetId } of rows) {
|
|
40
|
+
if (!activeDataSetIds.has(dataSetId))
|
|
41
|
+
continue;
|
|
42
|
+
if (cid == null || seenCids.has(cid))
|
|
43
|
+
continue;
|
|
44
|
+
seenCids.add(cid);
|
|
45
|
+
pieces.push({ cid, metadata: toStringMetadata(metadata) });
|
|
46
|
+
}
|
|
47
|
+
await onPage({ operations: await piecesToRepairOperations({ pieces, repairId, alternateProviderUrls }) });
|
|
110
48
|
}
|
|
111
49
|
}
|
|
112
|
-
export async function forEachDataSetPiecesPage(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
50
|
+
export async function forEachDataSetPiecesPage({ api, dataSetId, repairId, sourceProviderUrl }, onPage) {
|
|
51
|
+
const pieces = (await listDataSetPieces(api, dataSetId, { removed: false })).reverse();
|
|
52
|
+
const now = Date.now();
|
|
53
|
+
for (let offset = 0; offset < pieces.length; offset += MAX_PAGE_SIZE) {
|
|
54
|
+
const operations = [];
|
|
55
|
+
for (const { cid, metadata } of pieces.slice(offset, offset + MAX_PAGE_SIZE)) {
|
|
56
|
+
if (cid == null)
|
|
57
|
+
continue;
|
|
58
|
+
operations.push({
|
|
59
|
+
repairId,
|
|
60
|
+
type: 'add_piece',
|
|
61
|
+
status: 'pending',
|
|
62
|
+
cid,
|
|
63
|
+
metadata: toStringMetadata(metadata),
|
|
64
|
+
alternateProvider: sourceProviderUrl,
|
|
65
|
+
createdAt: now,
|
|
66
|
+
updatedAt: now,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
await onPage({ operations });
|
|
123
70
|
}
|
|
124
71
|
}
|
|
125
72
|
//# sourceMappingURL=get-pieces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-pieces.js","sourceRoot":"","sources":["../../../src/db/get-pieces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"get-pieces.js","sourceRoot":"","sources":["../../../src/db/get-pieces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Context, RepairProvider } from '../types.ts';
|
|
2
|
-
export interface GetRepairProviderOptions extends Pick<Context, '
|
|
2
|
+
export interface GetRepairProviderOptions extends Pick<Context, 'api'> {
|
|
3
3
|
providerId: bigint;
|
|
4
4
|
}
|
|
5
|
-
export declare function getRepairProvider({
|
|
5
|
+
export declare function getRepairProvider({ api, providerId }: GetRepairProviderOptions): Promise<RepairProvider | null>;
|
|
6
6
|
//# sourceMappingURL=get-repair-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-repair-provider.d.ts","sourceRoot":"","sources":["../../../src/db/get-repair-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-repair-provider.d.ts","sourceRoot":"","sources":["../../../src/db/get-repair-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE1D,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;IACpE,UAAU,EAAE,MAAM,CAAA;CACnB;AAKD,wBAAsB,iBAAiB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAerH"}
|
|
@@ -1,28 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export async function getRepairProvider({
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
.select({
|
|
6
|
-
providerId: schema.providers.providerId,
|
|
7
|
-
providerAddress: schema.providers.providerAddress,
|
|
8
|
-
name: schema.providers.name,
|
|
9
|
-
serviceUrl: schema.providers.serviceUrl,
|
|
10
|
-
approved: schema.providers.approved,
|
|
11
|
-
endorsed: schema.providers.endorsed,
|
|
12
|
-
})
|
|
13
|
-
.from(schema.providers)
|
|
14
|
-
.where(and(eq(schema.providers.providerId, providerId), eq(schema.providers.providerActive, true), eq(schema.providers.pdpProductActive, true)))
|
|
15
|
-
.limit(1);
|
|
16
|
-
if (!provider?.providerAddress || !provider?.serviceUrl || !provider?.name) {
|
|
1
|
+
import { getProvider } from "../api.js";
|
|
2
|
+
export async function getRepairProvider({ api, providerId }) {
|
|
3
|
+
const provider = await getProvider(api, providerId);
|
|
4
|
+
if (!provider?.active || !provider.pdpProductActive || !provider.serviceUrl || !provider.name) {
|
|
17
5
|
return null;
|
|
18
6
|
}
|
|
19
7
|
return {
|
|
20
|
-
providerId: provider.providerId,
|
|
21
|
-
providerAddress: provider.
|
|
8
|
+
providerId: BigInt(provider.providerId),
|
|
9
|
+
providerAddress: provider.address,
|
|
22
10
|
name: provider.name,
|
|
23
11
|
serviceUrl: provider.serviceUrl,
|
|
24
|
-
approved: provider.approved,
|
|
25
|
-
endorsed: provider.endorsed,
|
|
12
|
+
approved: provider.approved ?? false,
|
|
13
|
+
endorsed: provider.endorsed ?? false,
|
|
26
14
|
};
|
|
27
15
|
}
|
|
28
16
|
//# sourceMappingURL=get-repair-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-repair-provider.js","sourceRoot":"","sources":["../../../src/db/get-repair-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-repair-provider.js","sourceRoot":"","sources":["../../../src/db/get-repair-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAUvC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAE,GAAG,EAAE,UAAU,EAA4B;IACnF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAEnD,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QACvC,eAAe,EAAE,QAAQ,CAAC,OAAkB;QAC5C,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK;QACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK;KACrC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-create.d.ts","sourceRoot":"","sources":["../../../src/db/repair-create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AASD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"repair-create.d.ts","sourceRoot":"","sources":["../../../src/db/repair-create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AASD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoFhF"}
|
|
@@ -4,7 +4,7 @@ import { NoAlternateProviderError, RepairCreationError } from "../error.js";
|
|
|
4
4
|
import { forEachPiecesPage } from "./get-pieces.js";
|
|
5
5
|
import { getRepairProvider } from "./get-repair-provider.js";
|
|
6
6
|
export async function repairCreate(options) {
|
|
7
|
-
const {
|
|
7
|
+
const { api, localDb, repairProviderId, targetProviderId, client } = options;
|
|
8
8
|
const localSchema = localDb._.fullSchema;
|
|
9
9
|
const now = Date.now();
|
|
10
10
|
const blockNumber = await getBlockNumber(client);
|
|
@@ -17,7 +17,7 @@ export async function repairCreate(options) {
|
|
|
17
17
|
throw new RepairCreationError('Target provider must differ from the provider being repaired');
|
|
18
18
|
}
|
|
19
19
|
const targetProvider = await getRepairProvider({
|
|
20
|
-
|
|
20
|
+
api,
|
|
21
21
|
providerId: targetProviderId,
|
|
22
22
|
});
|
|
23
23
|
if (!targetProvider) {
|
|
@@ -26,8 +26,10 @@ export async function repairCreate(options) {
|
|
|
26
26
|
const [repair] = await localDb
|
|
27
27
|
.insert(localSchema.repairs)
|
|
28
28
|
.values({
|
|
29
|
+
kind: 'repair',
|
|
29
30
|
repairProviderId,
|
|
30
31
|
repairDataSetId: null,
|
|
32
|
+
sourceProviderUrl: null,
|
|
31
33
|
targetProviderId: targetProvider.providerId,
|
|
32
34
|
targetProviderUrl: targetProvider.serviceUrl,
|
|
33
35
|
targetDataSetId: null,
|
|
@@ -43,7 +45,7 @@ export async function repairCreate(options) {
|
|
|
43
45
|
let totalSkippedOperations = 0;
|
|
44
46
|
const seenCids = new Set();
|
|
45
47
|
await forEachPiecesPage({
|
|
46
|
-
|
|
48
|
+
api,
|
|
47
49
|
providerId: repairProviderId,
|
|
48
50
|
repairId: repair.id,
|
|
49
51
|
blockNumber,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-create.js","sourceRoot":"","sources":["../../../src/db/repair-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAc5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"repair-create.js","sourceRoot":"","sources":["../../../src/db/repair-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replicate-create.d.ts","sourceRoot":"","sources":["../../../src/db/replicate-create.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,MAAM,WAAW,sBAAuB,SAAQ,OAAO;IACrD,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAQD,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"replicate-create.d.ts","sourceRoot":"","sources":["../../../src/db/replicate-create.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,MAAM,WAAW,sBAAuB,SAAQ,OAAO;IACrD,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAQD,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgFtF"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { taskLog } from '@clack/prompts';
|
|
2
|
-
import { eq } from 'drizzle-orm';
|
|
3
2
|
import { getBlockNumber } from 'viem/actions';
|
|
3
|
+
import { getDataSet } from "../api.js";
|
|
4
4
|
import { NoAlternateProviderError, RepairCreationError } from "../error.js";
|
|
5
5
|
import { forEachDataSetPiecesPage } from "./get-pieces.js";
|
|
6
6
|
import { getRepairProvider } from "./get-repair-provider.js";
|
|
7
7
|
export async function replicateCreate(options) {
|
|
8
|
-
const {
|
|
9
|
-
const indexerSchema = indexerDb._.fullSchema;
|
|
8
|
+
const { api, localDb, dataSetId, targetProviderId, client } = options;
|
|
10
9
|
const localSchema = localDb._.fullSchema;
|
|
11
10
|
const now = Date.now();
|
|
12
11
|
const blockNumber = await getBlockNumber(client);
|
|
@@ -15,30 +14,23 @@ export async function replicateCreate(options) {
|
|
|
15
14
|
limit: 10,
|
|
16
15
|
retainLog: true,
|
|
17
16
|
});
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
dataSetId: indexerSchema.dataSets.dataSetId,
|
|
21
|
-
providerId: indexerSchema.dataSets.providerId,
|
|
22
|
-
deleted: indexerSchema.dataSets.deleted,
|
|
23
|
-
})
|
|
24
|
-
.from(indexerSchema.dataSets)
|
|
25
|
-
.where(eq(indexerSchema.dataSets.dataSetId, dataSetId))
|
|
26
|
-
.limit(1);
|
|
27
|
-
if (!sourceDataSet || sourceDataSet.deleted) {
|
|
17
|
+
const sourceDataSet = await getDataSet(api, dataSetId);
|
|
18
|
+
if (!sourceDataSet || sourceDataSet.deleted || sourceDataSet.providerId == null) {
|
|
28
19
|
throw new RepairCreationError(`Source dataset ${dataSetId} not found or deleted`);
|
|
29
20
|
}
|
|
30
|
-
|
|
21
|
+
const sourceProviderId = BigInt(sourceDataSet.providerId);
|
|
22
|
+
if (targetProviderId === sourceProviderId) {
|
|
31
23
|
throw new RepairCreationError('Target provider must differ from the source dataset provider');
|
|
32
24
|
}
|
|
33
25
|
const sourceProvider = await getRepairProvider({
|
|
34
|
-
|
|
35
|
-
providerId:
|
|
26
|
+
api,
|
|
27
|
+
providerId: sourceProviderId,
|
|
36
28
|
});
|
|
37
29
|
if (!sourceProvider) {
|
|
38
|
-
throw new RepairCreationError(`Source provider ${
|
|
30
|
+
throw new RepairCreationError(`Source provider ${sourceProviderId} not found or inactive`);
|
|
39
31
|
}
|
|
40
32
|
const targetProvider = await getRepairProvider({
|
|
41
|
-
|
|
33
|
+
api,
|
|
42
34
|
providerId: targetProviderId,
|
|
43
35
|
});
|
|
44
36
|
if (!targetProvider) {
|
|
@@ -47,8 +39,10 @@ export async function replicateCreate(options) {
|
|
|
47
39
|
const [repair] = await localDb
|
|
48
40
|
.insert(localSchema.repairs)
|
|
49
41
|
.values({
|
|
42
|
+
kind: 'replicate',
|
|
50
43
|
repairProviderId: sourceProvider.providerId,
|
|
51
|
-
repairDataSetId:
|
|
44
|
+
repairDataSetId: dataSetId,
|
|
45
|
+
sourceProviderUrl: sourceProvider.serviceUrl,
|
|
52
46
|
targetProviderId: targetProvider.providerId,
|
|
53
47
|
targetProviderUrl: targetProvider.serviceUrl,
|
|
54
48
|
targetDataSetId: null,
|
|
@@ -61,8 +55,8 @@ export async function replicateCreate(options) {
|
|
|
61
55
|
throw new RepairCreationError('Failed to create replication row');
|
|
62
56
|
let totalOperations = 0;
|
|
63
57
|
await forEachDataSetPiecesPage({
|
|
64
|
-
|
|
65
|
-
dataSetId
|
|
58
|
+
api,
|
|
59
|
+
dataSetId,
|
|
66
60
|
repairId: repair.id,
|
|
67
61
|
sourceProviderUrl: sourceProvider.serviceUrl,
|
|
68
62
|
}, async (page) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replicate-create.js","sourceRoot":"","sources":["../../../src/db/replicate-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"replicate-create.js","sourceRoot":"","sources":["../../../src/db/replicate-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Context } from '../types.ts';
|
|
2
|
+
export interface SecondCopyCreateOptions extends Context {
|
|
3
|
+
piecesFile: string;
|
|
4
|
+
sourceProviderUrl: string;
|
|
5
|
+
targetProviderId: bigint;
|
|
6
|
+
}
|
|
7
|
+
export declare function normalizeProviderUrl(url: string): string;
|
|
8
|
+
export declare function parsePieceCidsFromFile(piecesFile: string): Promise<string[]>;
|
|
9
|
+
export declare function secondCopyCreate(options: SecondCopyCreateOptions): Promise<number>;
|
|
10
|
+
//# sourceMappingURL=second-copy-create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"second-copy-create.d.ts","sourceRoot":"","sources":["../../../src/db/second-copy-create.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAK1C,MAAM,WAAW,uBAAwB,SAAQ,OAAO;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AASD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAcxD;AAKD,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BlF;AAQD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqExF"}
|