@helium/helium-admin-cli 0.10.33 → 0.10.35

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.
@@ -51,7 +51,8 @@ const hasDeploymentInfo = (wi) => {
51
51
  wi.deploymentInfo.elevation ||
52
52
  wi.deploymentInfo.azimuth ||
53
53
  wi.deploymentInfo.mechanicalDownTilt ||
54
- wi.deploymentInfo.electricalDownTilt);
54
+ wi.deploymentInfo.electricalDownTilt ||
55
+ wi.deploymentInfo.serial);
55
56
  };
56
57
  const getH3Location = (lat, lng) => {
57
58
  try {
@@ -95,9 +96,18 @@ function run(args = process.argv) {
95
96
  type: "boolean",
96
97
  default: false,
97
98
  },
99
+ noSsl: {
100
+ type: "boolean",
101
+ default: false,
102
+ describe: "Disable SSL for database connection",
103
+ },
98
104
  });
99
105
  const argv = yield yarg.argv;
100
106
  const commit = argv.commit;
107
+ console.log("Starting mobile deployment info backfill...");
108
+ console.log(`Database: ${argv.pgDatabase}@${argv.pgHost}:${argv.pgPort}`);
109
+ console.log(`Solana RPC: ${argv.url}`);
110
+ console.log(`Commit mode: ${commit ? "ENABLED" : "DRY RUN"}`);
101
111
  process.env.ANCHOR_WALLET = argv.wallet;
102
112
  process.env.ANCHOR_PROVIDER_URL = argv.url;
103
113
  anchor.setProvider(anchor.AnchorProvider.local(argv.url));
@@ -106,6 +116,7 @@ function run(args = process.argv) {
106
116
  const wallet = new anchor.Wallet((0, utils_1.loadKeypair)(argv.wallet));
107
117
  const hem = yield (0, helium_entity_manager_sdk_1.init)(provider);
108
118
  const isRds = argv.pgHost.includes("rds.amazon.com");
119
+ console.log("Connecting to database...");
109
120
  const client = new pg_1.Client({
110
121
  user: argv.pgUser,
111
122
  password: argv.pgPassword,
@@ -113,21 +124,26 @@ function run(args = process.argv) {
113
124
  database: argv.pgDatabase,
114
125
  port: Number(argv.pgPort),
115
126
  ssl: argv.noSsl
116
- ? {
127
+ ? false
128
+ : {
117
129
  rejectUnauthorized: false,
118
- }
119
- : false,
130
+ },
120
131
  });
121
132
  yield client.connect();
133
+ console.log("✅ Database connected successfully");
122
134
  const [subDao] = (0, helium_sub_daos_sdk_1.subDaoKey)(spl_utils_1.MOBILE_MINT);
123
135
  const [rewardableEntityconfig] = (0, helium_entity_manager_sdk_1.rewardableEntityConfigKey)(subDao, "MOBILE");
136
+ console.log("Fetching WiFi info from database...");
124
137
  const wifiInfos = (yield client.query(`
125
138
  SELECT c.hs_pubkey,
139
+ r.radio_serial_number as serial,
126
140
  c.antenna,
127
141
  c.height AS elevation,
128
142
  c.azimuth AS azimuth,
129
143
  c.mt AS mechanical_down_tilt,
130
- c.et AS electrical_down_tilt
144
+ c.et AS electrical_down_tilt,
145
+ ST_Y(c.loc) AS lat,
146
+ ST_X(c.loc) AS lng
131
147
  FROM radios AS r
132
148
  JOIN calculations c ON r.last_success_calculation = c.id
133
149
  WHERE r.is_active IS TRUE
@@ -138,13 +154,27 @@ function run(args = process.argv) {
138
154
  azimuth: Number(wifiInfo.azimuth),
139
155
  mechanicalDownTilt: Number(wifiInfo.mechanical_down_tilt),
140
156
  electricalDownTilt: Number(wifiInfo.electrical_down_tilt),
157
+ serial: wifiInfo.serial,
141
158
  } })));
159
+ console.log(`Found ${wifiInfos.length} WiFi hotspots in database`);
160
+ console.log(`${wifiInfos.filter(hasDeploymentInfo).length} have deployment info`);
161
+ console.log(`${wifiInfos.filter((w) => w.location).length} have valid locations`);
162
+ console.log(`${wifiInfos.filter((w) => w.deploymentInfo.serial).length} have valid serials`);
142
163
  const mobileInfos = wifiInfos.map((wifiInfo) => (0, helium_entity_manager_sdk_1.mobileInfoKey)(rewardableEntityconfig, wifiInfo.hs_pubkey)[0]);
143
- const accountInfosWithPk = (yield Promise.all((0, spl_utils_1.chunks)(mobileInfos, 100).map((chunk) => conn.getMultipleAccountsInfo(chunk))))
164
+ console.log("Fetching mobile info accounts from Solana...");
165
+ const accountInfosWithPk = (yield Promise.all((0, spl_utils_1.chunks)(mobileInfos, 100).map((chunk, idx) => __awaiter(this, void 0, void 0, function* () {
166
+ console.log(`Batch ${idx + 1}/${Math.ceil(mobileInfos.length / 100)} (${chunk.length} accounts)`);
167
+ return conn.getMultipleAccountsInfo(chunk);
168
+ }))))
144
169
  .flat()
145
170
  .map((accountInfo, idx) => (Object.assign({ pubkey: mobileInfos[idx], wifiInfo: wifiInfos[idx] }, accountInfo)));
146
- const ixs = (yield Promise.all(accountInfosWithPk.map((acc) => __awaiter(this, void 0, void 0, function* () {
171
+ console.log(`Found ${accountInfosWithPk.filter((acc) => acc.data).length} existing mobile info accounts`);
172
+ console.log("Analyzing accounts for corrections...");
173
+ const ixs = (yield Promise.all(accountInfosWithPk.map((acc, idx) => __awaiter(this, void 0, void 0, function* () {
147
174
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
175
+ if (idx % 100 === 0) {
176
+ console.log(`Processed ${idx}/${accountInfosWithPk.length} accounts`);
177
+ }
148
178
  if (acc.data) {
149
179
  let correction = {};
150
180
  const decodedAcc = hem.coder.accounts.decode("mobileHotspotInfoV0", acc.data);
@@ -154,26 +184,10 @@ function run(args = process.argv) {
154
184
  ((_b = (_a = decodedAcc.deploymentInfo) === null || _a === void 0 ? void 0 : _a.wifiInfoV0) === null || _b === void 0 ? void 0 : _b.antenna) ||
155
185
  0,
156
186
  elevation: ((_d = (_c = decodedAcc.deploymentInfo) === null || _c === void 0 ? void 0 : _c.wifiInfoV0) === null || _d === void 0 ? void 0 : _d.elevation) || 0,
157
- // elevation descrepency was found and backfilled so default to whats on chain
158
- // decodedAcc.deploymentInfo?.wifiInfoV0?.elevation ||
159
- // floored since stored on chain as i32 representation in whole meters
160
- // Math.floor(acc.wifiInfo.deploymentInfo.elevation) ||
161
- // 0,
162
187
  azimuth: ((_f = (_e = decodedAcc.deploymentInfo) === null || _e === void 0 ? void 0 : _e.wifiInfoV0) === null || _f === void 0 ? void 0 : _f.azimuth) || 0,
163
- // azimuth descrepency was found and backfilled so default to whats on chain
164
- // decodedAcc.deploymentInfo?.wifiInfoV0?.azimuth ||
165
- // acc.wifiInfo.deploymentInfo.azimuth ||
166
- // 0,
167
188
  mechanicalDownTilt: ((_h = (_g = decodedAcc.deploymentInfo) === null || _g === void 0 ? void 0 : _g.wifiInfoV0) === null || _h === void 0 ? void 0 : _h.mechanicalDownTilt) || 0,
168
- // mechanicalDownTilt descrepency was found and backfilled so default to whats on chain
169
- // decodedAcc.deploymentInfo?.wifiInfoV0?.mechanicalDownTilt ||
170
- // acc.wifiInfo.deploymentInfo.mechanicalDownTilt ||
171
- // 0,
172
189
  electricalDownTilt: ((_k = (_j = decodedAcc.deploymentInfo) === null || _j === void 0 ? void 0 : _j.wifiInfoV0) === null || _k === void 0 ? void 0 : _k.electricalDownTilt) || 0,
173
- // electricalDownTilt descrepency was found and backfilled so default to whats on chain
174
- // decodedAcc.deploymentInfo?.wifiInfoV0?.electricalDownTilt ||
175
- // acc.wifiInfo.deploymentInfo.electricalDownTilt ||
176
- // 0,
190
+ serial: acc.wifiInfo.deploymentInfo.serial || null,
177
191
  };
178
192
  const deploymentInfoChanged = !(0, fast_deep_equal_1.default)((_l = decodedAcc.deploymentInfo) === null || _l === void 0 ? void 0 : _l.wifiInfoV0, correctedDeploymentInfo);
179
193
  const locationMissing = !decodedAcc.location && acc.wifiInfo.location;
@@ -187,10 +201,10 @@ function run(args = process.argv) {
187
201
  }
188
202
  if (Object.keys(correction).length > 0) {
189
203
  if (!argv.commit) {
190
- console.log({
191
- pubkey: acc.pubkey,
192
- current: Object.assign({}, (_m = decodedAcc.deploymentInfo) === null || _m === void 0 ? void 0 : _m.wifiInfoV0),
193
- new: Object.assign({}, correctedDeploymentInfo),
204
+ console.log("Correction needed:", {
205
+ pubkey: acc.pubkey.toString(),
206
+ current: Object.assign(Object.assign({}, (locationMissing && { location: decodedAcc.location })), (_m = decodedAcc.deploymentInfo) === null || _m === void 0 ? void 0 : _m.wifiInfoV0),
207
+ new: Object.assign(Object.assign({}, (locationMissing && { location: correction.location })), correctedDeploymentInfo),
194
208
  });
195
209
  }
196
210
  return yield hem.methods
@@ -208,15 +222,25 @@ function run(args = process.argv) {
208
222
  })))).filter(spl_utils_1.truthy);
209
223
  console.log(`Total corrections needed: ${ixs.length}`);
210
224
  if (commit) {
225
+ if (ixs.length === 0) {
226
+ console.log("✅ No corrections needed, exiting");
227
+ return;
228
+ }
229
+ console.log("Building and sending transactions...");
211
230
  try {
212
231
  const transactions = yield (0, spl_utils_1.batchInstructionsToTxsWithPriorityFee)(provider, ixs, { useFirstEstimateForAll: true });
232
+ console.log(`Created ${transactions.length} transactions`);
213
233
  yield (0, spl_utils_1.bulkSendTransactions)(provider, transactions, console.log, 10, [], 100);
234
+ console.log("✅ All transactions completed successfully!");
214
235
  }
215
236
  catch (e) {
216
- console.error("Failed to process mobile deployment info updates:", e);
237
+ console.error("Failed to process mobile deployment info updates:", e);
217
238
  process.exit(1);
218
239
  }
219
240
  }
241
+ else {
242
+ console.log("Dry run complete - use --commit to apply changes");
243
+ }
220
244
  });
221
245
  }
222
246
  exports.run = run;
@@ -1 +1 @@
1
- {"version":3,"file":"backfill-mobile-deployment-infos.js","sourceRoot":"","sources":["../../src/backfill-mobile-deployment-infos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backfill-mobile-deployment-infos.js","sourceRoot":"","sources":["../../src/backfill-mobile-deployment-infos.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,8 @@ const hasDeploymentInfo = (wi) => {
13
13
  wi.deploymentInfo.elevation ||
14
14
  wi.deploymentInfo.azimuth ||
15
15
  wi.deploymentInfo.mechanicalDownTilt ||
16
- wi.deploymentInfo.electricalDownTilt);
16
+ wi.deploymentInfo.electricalDownTilt ||
17
+ wi.deploymentInfo.serial);
17
18
  };
18
19
  export const getH3Location = (lat, lng) => {
19
20
  try {
@@ -55,9 +56,18 @@ export async function run(args = process.argv) {
55
56
  type: "boolean",
56
57
  default: false,
57
58
  },
59
+ noSsl: {
60
+ type: "boolean",
61
+ default: false,
62
+ describe: "Disable SSL for database connection",
63
+ },
58
64
  });
59
65
  const argv = await yarg.argv;
60
66
  const commit = argv.commit;
67
+ console.log("Starting mobile deployment info backfill...");
68
+ console.log(`Database: ${argv.pgDatabase}@${argv.pgHost}:${argv.pgPort}`);
69
+ console.log(`Solana RPC: ${argv.url}`);
70
+ console.log(`Commit mode: ${commit ? "ENABLED" : "DRY RUN"}`);
61
71
  process.env.ANCHOR_WALLET = argv.wallet;
62
72
  process.env.ANCHOR_PROVIDER_URL = argv.url;
63
73
  anchor.setProvider(anchor.AnchorProvider.local(argv.url));
@@ -66,6 +76,7 @@ export async function run(args = process.argv) {
66
76
  const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
67
77
  const hem = await initHEM(provider);
68
78
  const isRds = argv.pgHost.includes("rds.amazon.com");
79
+ console.log("Connecting to database...");
69
80
  const client = new Client({
70
81
  user: argv.pgUser,
71
82
  password: argv.pgPassword,
@@ -73,21 +84,26 @@ export async function run(args = process.argv) {
73
84
  database: argv.pgDatabase,
74
85
  port: Number(argv.pgPort),
75
86
  ssl: argv.noSsl
76
- ? {
87
+ ? false
88
+ : {
77
89
  rejectUnauthorized: false,
78
- }
79
- : false,
90
+ },
80
91
  });
81
92
  await client.connect();
93
+ console.log("✅ Database connected successfully");
82
94
  const [subDao] = subDaoKey(MOBILE_MINT);
83
95
  const [rewardableEntityconfig] = rewardableEntityConfigKey(subDao, "MOBILE");
96
+ console.log("Fetching WiFi info from database...");
84
97
  const wifiInfos = (await client.query(`
85
98
  SELECT c.hs_pubkey,
99
+ r.radio_serial_number as serial,
86
100
  c.antenna,
87
101
  c.height AS elevation,
88
102
  c.azimuth AS azimuth,
89
103
  c.mt AS mechanical_down_tilt,
90
- c.et AS electrical_down_tilt
104
+ c.et AS electrical_down_tilt,
105
+ ST_Y(c.loc) AS lat,
106
+ ST_X(c.loc) AS lng
91
107
  FROM radios AS r
92
108
  JOIN calculations c ON r.last_success_calculation = c.id
93
109
  WHERE r.is_active IS TRUE
@@ -101,17 +117,31 @@ export async function run(args = process.argv) {
101
117
  azimuth: Number(wifiInfo.azimuth),
102
118
  mechanicalDownTilt: Number(wifiInfo.mechanical_down_tilt),
103
119
  electricalDownTilt: Number(wifiInfo.electrical_down_tilt),
120
+ serial: wifiInfo.serial,
104
121
  },
105
122
  }));
123
+ console.log(`Found ${wifiInfos.length} WiFi hotspots in database`);
124
+ console.log(`${wifiInfos.filter(hasDeploymentInfo).length} have deployment info`);
125
+ console.log(`${wifiInfos.filter((w) => w.location).length} have valid locations`);
126
+ console.log(`${wifiInfos.filter((w) => w.deploymentInfo.serial).length} have valid serials`);
106
127
  const mobileInfos = wifiInfos.map((wifiInfo) => mobileInfoKey(rewardableEntityconfig, wifiInfo.hs_pubkey)[0]);
107
- const accountInfosWithPk = (await Promise.all(chunks(mobileInfos, 100).map((chunk) => conn.getMultipleAccountsInfo(chunk))))
128
+ console.log("Fetching mobile info accounts from Solana...");
129
+ const accountInfosWithPk = (await Promise.all(chunks(mobileInfos, 100).map(async (chunk, idx) => {
130
+ console.log(`Batch ${idx + 1}/${Math.ceil(mobileInfos.length / 100)} (${chunk.length} accounts)`);
131
+ return conn.getMultipleAccountsInfo(chunk);
132
+ })))
108
133
  .flat()
109
134
  .map((accountInfo, idx) => ({
110
135
  pubkey: mobileInfos[idx],
111
136
  wifiInfo: wifiInfos[idx],
112
137
  ...accountInfo,
113
138
  }));
114
- const ixs = (await Promise.all(accountInfosWithPk.map(async (acc) => {
139
+ console.log(`Found ${accountInfosWithPk.filter((acc) => acc.data).length} existing mobile info accounts`);
140
+ console.log("Analyzing accounts for corrections...");
141
+ const ixs = (await Promise.all(accountInfosWithPk.map(async (acc, idx) => {
142
+ if (idx % 100 === 0) {
143
+ console.log(`Processed ${idx}/${accountInfosWithPk.length} accounts`);
144
+ }
115
145
  if (acc.data) {
116
146
  let correction = {};
117
147
  const decodedAcc = hem.coder.accounts.decode("mobileHotspotInfoV0", acc.data);
@@ -121,26 +151,10 @@ export async function run(args = process.argv) {
121
151
  decodedAcc.deploymentInfo?.wifiInfoV0?.antenna ||
122
152
  0,
123
153
  elevation: decodedAcc.deploymentInfo?.wifiInfoV0?.elevation || 0,
124
- // elevation descrepency was found and backfilled so default to whats on chain
125
- // decodedAcc.deploymentInfo?.wifiInfoV0?.elevation ||
126
- // floored since stored on chain as i32 representation in whole meters
127
- // Math.floor(acc.wifiInfo.deploymentInfo.elevation) ||
128
- // 0,
129
154
  azimuth: decodedAcc.deploymentInfo?.wifiInfoV0?.azimuth || 0,
130
- // azimuth descrepency was found and backfilled so default to whats on chain
131
- // decodedAcc.deploymentInfo?.wifiInfoV0?.azimuth ||
132
- // acc.wifiInfo.deploymentInfo.azimuth ||
133
- // 0,
134
155
  mechanicalDownTilt: decodedAcc.deploymentInfo?.wifiInfoV0?.mechanicalDownTilt || 0,
135
- // mechanicalDownTilt descrepency was found and backfilled so default to whats on chain
136
- // decodedAcc.deploymentInfo?.wifiInfoV0?.mechanicalDownTilt ||
137
- // acc.wifiInfo.deploymentInfo.mechanicalDownTilt ||
138
- // 0,
139
156
  electricalDownTilt: decodedAcc.deploymentInfo?.wifiInfoV0?.electricalDownTilt || 0,
140
- // electricalDownTilt descrepency was found and backfilled so default to whats on chain
141
- // decodedAcc.deploymentInfo?.wifiInfoV0?.electricalDownTilt ||
142
- // acc.wifiInfo.deploymentInfo.electricalDownTilt ||
143
- // 0,
157
+ serial: acc.wifiInfo.deploymentInfo.serial || null,
144
158
  };
145
159
  const deploymentInfoChanged = !deepEqual(decodedAcc.deploymentInfo?.wifiInfoV0, correctedDeploymentInfo);
146
160
  const locationMissing = !decodedAcc.location && acc.wifiInfo.location;
@@ -160,12 +174,14 @@ export async function run(args = process.argv) {
160
174
  }
161
175
  if (Object.keys(correction).length > 0) {
162
176
  if (!argv.commit) {
163
- console.log({
164
- pubkey: acc.pubkey,
177
+ console.log("Correction needed:", {
178
+ pubkey: acc.pubkey.toString(),
165
179
  current: {
180
+ ...(locationMissing && { location: decodedAcc.location }),
166
181
  ...decodedAcc.deploymentInfo?.wifiInfoV0,
167
182
  },
168
183
  new: {
184
+ ...(locationMissing && { location: correction.location }),
169
185
  ...correctedDeploymentInfo,
170
186
  },
171
187
  });
@@ -185,14 +201,24 @@ export async function run(args = process.argv) {
185
201
  }))).filter(truthy);
186
202
  console.log(`Total corrections needed: ${ixs.length}`);
187
203
  if (commit) {
204
+ if (ixs.length === 0) {
205
+ console.log("✅ No corrections needed, exiting");
206
+ return;
207
+ }
208
+ console.log("Building and sending transactions...");
188
209
  try {
189
210
  const transactions = await batchInstructionsToTxsWithPriorityFee(provider, ixs, { useFirstEstimateForAll: true });
211
+ console.log(`Created ${transactions.length} transactions`);
190
212
  await bulkSendTransactions(provider, transactions, console.log, 10, [], 100);
213
+ console.log("✅ All transactions completed successfully!");
191
214
  }
192
215
  catch (e) {
193
- console.error("Failed to process mobile deployment info updates:", e);
216
+ console.error("Failed to process mobile deployment info updates:", e);
194
217
  process.exit(1);
195
218
  }
196
219
  }
220
+ else {
221
+ console.log("Dry run complete - use --commit to apply changes");
222
+ }
197
223
  }
198
224
  //# sourceMappingURL=backfill-mobile-deployment-infos.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backfill-mobile-deployment-infos.js","sourceRoot":"","sources":["../../../src/backfill-mobile-deployment-infos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backfill-mobile-deployment-infos.js","sourceRoot":"","sources":["../../../src/backfill-mobile-deployment-infos.ts"],"names":[],"mappings":"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"}