Compare commits

..
Author SHA1 Message Date
prathamesh 6ebebaf4b6 Update records publishing script to resolve watcher and image records
Lint / lint (18.x) (pull_request) Successful in 1m11s
Tests / cli_tests (18.x) (pull_request) Successful in 8m49s
2024-08-26 14:23:29 +05:30
5 changed files with 50 additions and 26 deletions
+41
View File
@@ -16,6 +16,7 @@ enum RecordType {
StackRecord = 'StackRecord',
SubgraphRecord = 'SubgraphRecord',
WatcherRecord = 'WatcherRecord',
DockerImageRecord = 'DockerImageRecord'
}
const recordTypeToRecordField = new Map<string, string>([
@@ -188,6 +189,46 @@ async function publishRecord (userKey: string, bondId: string, fee: StdFee, reco
record.repository = repoRecordId;
}
// For stack records, check for attributes
if (record.type === RecordType.StackRecord) {
const watcherName = record.meta?.watcher;
const dockerImages = record.docker_images;
// If .docker_images present, check for image records
if (Array.isArray(dockerImages) && dockerImages.length > 0) {
const dockerImageRecordsIdPromises = dockerImages.map(async (dockerImage) => {
// Find the required docker image record
const queryResult = await registry.queryRecords({ type: RecordType.DockerImageRecord, name: dockerImage }, true);
if (queryResult.length === 0) {
throw new Error(`Record not found, type: ${RecordType.DockerImageRecord}, name: ${dockerImage}`);
}
// Assume the first query result
const dockerImageRecordId = queryResult[0].id;
// Replace watcher name with the watcher record id
return dockerImageRecordId;
});
record.docker_images = await Promise.all(dockerImageRecordsIdPromises);
}
// If .meta.watcher present, check for watcher record
if (watcherName) {
// Find the required watcher record
const queryResult = await registry.queryRecords({ type: RecordType.WatcherRecord, name: watcherName }, true);
if (queryResult.length === 0) {
throw new Error(`Record not found, type: ${RecordType.WatcherRecord}, name: ${watcherName}`);
}
// Assume the first query result
const watcherRecordId = queryResult[0].id;
// Replace watcher name with the watcher record id
record.meta.watcher = watcherRecordId;
}
}
return registry.setRecord({ privateKey: userKey, record, bondId }, userKey, fee);
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@cerc-io/laconic-registry-cli",
"version": "0.2.7",
"version": "0.2.6",
"main": "index.js",
"repository": "git@github.com:cerc-io/laconic-registry-cli.git",
"author": "",
@@ -29,7 +29,7 @@
"typescript": "^4.6.3"
},
"dependencies": {
"@cerc-io/registry-sdk": "^0.2.8",
"@cerc-io/registry-sdk": "^0.2.6",
"fs-extra": "^10.1.0",
"js-yaml": "^3.14.1",
"lodash": "^4.17.21",
+1 -8
View File
@@ -23,15 +23,8 @@ export const handler = async (argv: Arguments) => {
const registry = new Registry(gqlEndpoint, rpcEndpoint, chainId);
let result: any;
const { owner } = argv;
if (owner) {
const [bondsByOwnerResult] = await registry.queryBondsByOwner([String(owner)]);
result = bondsByOwnerResult.bonds;
} else {
result = await registry.queryBonds();
}
const result = await registry.queryBonds({ owner });
queryOutput(result, argv.output);
};
+2 -12
View File
@@ -24,23 +24,13 @@ export const builder = {
all: {
type: 'boolean',
default: false
},
refs: {
type: 'boolean',
default: false
},
limit: {
type: 'number'
},
offset: {
type: 'number'
}
};
export const handler = async (argv: Arguments) => {
const { services: { registry: registryConfig } } = getConfig(argv.config as string);
const { rpcEndpoint, gqlEndpoint, chainId } = getConnectionInfo(argv, registryConfig);
const { type, name, bondId, owner, all, refs, limit, offset } = argv;
const { type, name, bondId, owner, all } = argv;
const filters: any = {};
const filterArgs = argv._.slice(3);
@@ -54,7 +44,7 @@ export const handler = async (argv: Arguments) => {
const registry = new Registry(gqlEndpoint, rpcEndpoint, chainId);
let result = await registry.queryRecords({ ...filters, type, name }, all as boolean, refs as boolean, limit as number, offset as number);
let result = await registry.queryRecords({ ...filters, type, name }, all as boolean);
// Apply ex post filters.
if (bondId) {
+4 -4
View File
@@ -302,10 +302,10 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@cerc-io/registry-sdk@^0.2.8":
version "0.2.8"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fregistry-sdk/-/0.2.8/registry-sdk-0.2.8.tgz#d71837f735d998987055068457fdf8b2e94ca69c"
integrity sha512-utK3Rq5qZrEoRs/eOsOkowcsD740nlnBs6C3KKFRHgKIiR0XedD6t33KukUPLKbGp4mYZOYXRTA7/A04x58lKw==
"@cerc-io/registry-sdk@^0.2.6":
version "0.2.6"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fregistry-sdk/-/0.2.6/registry-sdk-0.2.6.tgz#af8a5844bdb742a01d322a9d93ace90d35aad37e"
integrity sha512-Z2rneeoPLTJk9aBTqMrR9WPKfPQZhNWShI4IYOb7kzoIorp3eD8mEals0I5bVjzStjapw/5RKf8lVnDCX9I4iA==
dependencies:
"@cosmjs/amino" "^0.28.1"
"@cosmjs/crypto" "^0.28.1"