Closed marc-aurele-besner closed 1 week ago
Name | Link |
---|---|
Latest commit | 7b743f0e679fec5efb9069e2f342c0b7e74df5fa |
Latest deploy log | https://app.netlify.com/sites/dev-astral/deploys/672ca9a73ccf140008478aa7 |
Deploy Preview | https://deploy-preview-924--dev-astral.netlify.app |
Preview on mobile | Toggle QR Code...Use your smartphone camera to open QR code link. |
To edit notification comments on pull requests, go to your Netlify site configuration.
Name | Link |
---|---|
Latest commit | 7b743f0e679fec5efb9069e2f342c0b7e74df5fa |
Latest deploy log | https://app.netlify.com/sites/astral-prod/deploys/672ca9a78e527f0009d288e3 |
Deploy Preview | https://deploy-preview-924--astral-prod.netlify.app |
Preview on mobile | Toggle QR Code...Use your smartphone camera to open QR code link. |
To edit notification comments on pull requests, go to your Netlify site configuration.
New and removed dependencies detected. Learn more about Socket for GitHub โ๏ธ
Package | New capabilities | Transitives | Size | Publisher |
---|---|---|---|---|
npm/@autonomys/auto-consensus@1.0.1 | None | 0 |
78.2 kB | marcaurelebesner |
npm/@autonomys/auto-utils@1.0.1 | filesystem Transitive: environment, network | +83 |
136 MB | marcaurelebesner |
๐ฎ Removed packages: npm/@autonomys/auto-consensus@0.2.0, npm/@autonomys/auto-consensus@0.6.8, npm/@autonomys/auto-utils@0.2.0, npm/@autonomys/auto-utils@0.6.8, npm/@subsquid/graphql-server@4.5.1, npm/@subsquid/ss58@2.0.2, npm/@subsquid/substrate-metadata-explorer@3.1.2, npm/@subsquid/substrate-processor@8.3.0, npm/@subsquid/substrate-typegen@8.1.0, npm/@subsquid/typeorm-codegen@2.0.0, npm/@subsquid/typeorm-migration@1.3.0, npm/@subsquid/typeorm-store@1.4.0, npm/@types/node@20.12.7, npm/pg@8.11.5, npm/typeorm@0.3.20, npm/typescript@5.4.5
Here are some key observations to aid the review process:
**๐ซ Ticket compliance analysis ๐ถ** **[919](https://github.com/autonomys/astral/issues/919) - Fully compliant** Fully compliant requirements: - Simplify Docker setup by consolidating network configurations into environment variables. - Update Docker Compose to dynamically use network IDs and remove specific network configurations. - Add new database table configurations for consensus and leaderboard schemas. - Remove creation of specific network databases in the initialization script. - Update environment variable names for chain ID and RPC URLs across multiple project files. **[920](https://github.com/autonomys/astral/issues/920) - Fully compliant** Fully compliant requirements: - Implement event and call handlers for staking, consensus, and leaderboard indexers on the mainnet. - Add database helper functions for managing domain, operator, and nominator data. - Configure projects with appropriate handlers and network settings. - Define TypeScript interfaces for various data structures used in the indexers. - Integrate logic for handling staking-related events, including deposits, withdrawals, and operator registration. - Add leaderboard management logic, including sorting and ranking based on events. **[923](https://github.com/autonomys/astral/issues/923) - Fully compliant** Fully compliant requirements: - Add support for formatting addresses with a testnet prefix in the `TestnetRewardsTable` component. - Introduce a new constant `SUBSPACE_ACC_PREFIX_TESTNET` for testnet address handling. - Enhance the `formatAddress` utility function to accept a custom SS58 format, allowing flexible address encoding. |
โฑ๏ธ Estimated effort to review: 5 ๐ต๐ต๐ต๐ต๐ต |
๐งช No relevant tests |
๐ No security concerns identified |
โก Recommended focus areas for review Possible Bug The logic for handling various blockchain events and calls in the staking indexer seems complex and could potentially introduce bugs or inefficiencies. It's crucial to ensure that all edge cases are handled correctly, especially around the management of deposits, withdrawals, and rewards. |
Explore these optional code suggestions:
Category | Suggestion | Score |
Best practice |
Ensure atomic operations for account record modifications to maintain data integrity___ **Use a transaction or similar mechanism to ensure that the creation or update ofaccount records and the subsequent save operation are atomic. This prevents data inconsistencies during concurrent access.** [indexers/mainnet/leaderboard/src/mappings/db.ts [36-48]](https://github.com/autonomys/astral/pull/924/files#diff-7a7163f599d7374df6dc09344f2650dd3f4f3f0df166044f6b581c7178cac3eaR36-R48) ```diff -account = AccountTransferSenderTotalCount.create({ - id, - rank: 0, - value, - lastContributionAt, - createdAt: blockNumber, - updatedAt: blockNumber, -}); -... -await account.save(); +const transaction = await database.transaction(); +try { + account = AccountTransferSenderTotalCount.create({ + id, + rank: 0, + value, + lastContributionAt, + createdAt: blockNumber, + updatedAt: blockNumber, + }, { transaction }); + await account.save({ transaction }); + await transaction.commit(); +} catch (error) { + await transaction.rollback(); + throw error; +} ``` Suggestion importance[1-10]: 9Why: Using transactions to ensure atomic operations when creating or updating records is vital for maintaining data consistency, especially in environments with concurrent access. | 9 |
Add error handling for data fetching to improve robustness___ **Consider handling potential exceptions when fetching data withAccountTransferSenderTotalCount.get(id) . This can prevent the application from crashing due to unhandled promise rejections if the data fetch fails.** [indexers/mainnet/leaderboard/src/mappings/db.ts [34]](https://github.com/autonomys/astral/pull/924/files#diff-7a7163f599d7374df6dc09344f2650dd3f4f3f0df166044f6b581c7178cac3eaR34-R34) ```diff -let account = await AccountTransferSenderTotalCount.get(id); +let account; +try { + account = await AccountTransferSenderTotalCount.get(id); +} catch (error) { + console.error('Failed to fetch account:', error); + throw error; // or handle error appropriately +} ``` Suggestion importance[1-10]: 8Why: Adding error handling for data fetching is crucial to prevent the application from crashing due to unhandled promise rejections, enhancing the robustness of the application. | 8 | |
Implement transaction handling for entity creation to ensure data consistency___ **Use a transaction or rollback mechanism when creating new entities to ensure dataconsistency in case of partial failures.** [indexers/mainnet/staking/src/mappings/db.ts [37]](https://github.com/autonomys/astral/pull/924/files#diff-86b8a40e16b8cf563207beb553fd0e739a0c25d54d3c6697578084d68c60c85dR37-R37) ```diff -domain = Domain.create({ +domain = await Domain.create({ id, ... +}).catch(error => { + console.error('Failed to create domain:', error); + throw error; // or handle rollback as appropriate }); ``` Suggestion importance[1-10]: 7Why: Implementing error handling and rollback mechanisms during entity creation is a best practice to ensure data consistency. This suggestion is relevant and would help in maintaining the integrity of data in case of errors during the creation process. | 7 | |
Add logging to track entity creation and saving operations___ **Implement logging for critical steps within the entity update or creation process toaid in debugging and monitoring the application's behavior.** [indexers/mainnet/leaderboard/src/mappings/db.ts [36-48]](https://github.com/autonomys/astral/pull/924/files#diff-7a7163f599d7374df6dc09344f2650dd3f4f3f0df166044f6b581c7178cac3eaR36-R48) ```diff account = AccountTransferSenderTotalCount.create({ id, rank: 0, value, lastContributionAt, createdAt: blockNumber, updatedAt: blockNumber, }); +console.log(`Account created: ${id}`); ... await account.save(); +console.log(`Account saved: ${id}`); ``` Suggestion importance[1-10]: 4Why: Implementing logging for critical operations aids in debugging and monitoring, providing visibility into the application's behavior, although it's a relatively minor enhancement compared to other suggestions. | 4 | |
Maintainability |
Refactor repetitive entity retrieval and creation into a generic function to enhance maintainability___ **Refactor the repeated code pattern in helper functions into a generic function toreduce code duplication and improve maintainability.** [indexers/mainnet/staking/src/mappings/db.ts [29-84]](https://github.com/autonomys/astral/pull/924/files#diff-86b8a40e16b8cf563207beb553fd0e739a0c25d54d3c6697578084d68c60c85dR29-R84) ```diff -export async function checkAndGetDomain( - domainId: string, - blockNumber: bigint -): Promise Suggestion importance[1-10]: 9Why: Refactoring repetitive patterns into a generic function significantly enhances code maintainability and reduces duplication. This suggestion is highly relevant as it addresses multiple similar function patterns in the file, providing a clear, maintainable solution. | 9 |
Refactor repetitive entity handling into a generic function to enhance code maintainability___ **Refactor the repeated logic for entity creation and updating into a generic functionto reduce code duplication and improve maintainability.** [indexers/mainnet/leaderboard/src/mappings/db.ts [36-48]](https://github.com/autonomys/astral/pull/924/files#diff-7a7163f599d7374df6dc09344f2650dd3f4f3f0df166044f6b581c7178cac3eaR36-R48) ```diff -if (!account) { - account = AccountTransferSenderTotalCount.create({ - id, - rank: 0, - value, - lastContributionAt, - createdAt: blockNumber, - updatedAt: blockNumber, - }); -} else { - account.value += value; - account.updatedAt = blockNumber; +async function updateOrCreateAccount(entity, id, value, blockNumber, lastContributionAt) { + let account = await entity.get(id); + if (!account) { + account = entity.create({ + id, + rank: 0, + value, + lastContributionAt, + createdAt: blockNumber, + updatedAt: blockNumber, + }); + } else { + account.value += value; + account.updatedAt = blockNumber; + } + await account.save(); + return account; } -await account.save(); +... +await updateOrCreateAccount(AccountTransferSenderTotalCount, id, value, blockNumber, lastContributionAt); ``` Suggestion importance[1-10]: 7Why: Refactoring repeated logic into a generic function reduces code duplication and improves maintainability, making the codebase cleaner and easier to manage. | 7 | |
Possible bug |
Improve error handling in the address formatting function to ensure robustness___ **Ensure that theformatAddress function correctly handles potential exceptions or errors that might arise from the keyring.encodeAddress method, especially since the address formatting is critical for filtering rewards based on addresses.** [explorer/src/components/TestnetRewards/TestnetRewardsTable.tsx [13]](https://github.com/autonomys/astral/pull/924/files#diff-35e3074a14443524d99d3004b4fa803bb33ed43a0649f85383a66ac28bdc1e76R13-R13) ```diff -address = keyring.encodeAddress(accountId, ss58Format) +try { + address = keyring.encodeAddress(accountId, ss58Format) +} catch (error) { + console.error('Error formatting address:', error); + return undefined; +} ``` Suggestion importance[1-10]: 8Why: Enhancing error handling in the address formatting function is crucial as it directly impacts the functionality of filtering rewards based on addresses, which is a critical operation. | 8 |
Ensure the useMemo hook's dependency array is correctly specified for accurate re-computation___ **Verify the dependency array of theuseMemo hook used for stFormattedAndMergedAddresses to ensure that all variables which affect the computation are included, preventing bugs related to stale closures.** [explorer/src/components/TestnetRewards/TestnetRewardsTable.tsx [124]](https://github.com/autonomys/astral/pull/924/files#diff-35e3074a14443524d99d3004b4fa803bb33ed43a0649f85383a66ac28bdc1e76R124-R124) ```diff -}, [mySubspaceWallets, subspaceAccount]) +}, [mySubspaceWallets, subspaceAccount, SUBSPACE_ACC_PREFIX_TESTNET]) ``` Suggestion importance[1-10]: 7Why: Including all relevant dependencies in the useMemo hook's array is essential to ensure that the computed value updates correctly, preventing potential bugs from stale closures. | 7 | |
Enhancement |
Add error handling to database operations to improve robustness___ **Consider adding error handling for database operations to manage exceptions orfailures gracefully.** [indexers/mainnet/staking/src/mappings/db.ts [35]](https://github.com/autonomys/astral/pull/924/files#diff-86b8a40e16b8cf563207beb553fd0e739a0c25d54d3c6697578084d68c60c85dR35-R35) ```diff -let domain = await Domain.get(id); +let domain; +try { + domain = await Domain.get(id); +} catch (error) { + console.error('Failed to fetch domain:', error); + throw error; // or handle error as appropriate +} ``` Suggestion importance[1-10]: 8Why: Adding error handling around database get operations is crucial for robustness, especially in a production environment where failures can occur. This suggestion correctly identifies a potential improvement area and provides a practical implementation. | 8 |
Avoid hardcoding values that may vary in different contexts for more flexible code___ **Replace the hardcodedss58Format: 42 with a dynamic value or ensure it's correctly set according to the context, as hardcoding may lead to incorrect address formatting across different network contexts.** [explorer/src/utils/formatAddress.ts [10]](https://github.com/autonomys/astral/pull/924/files#diff-ffccfbbcb813309b5f6c40cd232c7300b9f986a6be2f8a3d83dbed4d756f1424R10-R10) ```diff -const keyring = new Keyring({ type: 'sr25519', ss58Format: 42 }) +const keyring = new Keyring({ type: 'sr25519', ss58Format }) ``` Suggestion importance[1-10]: 6Why: Replacing hardcoded values with dynamic ones enhances the flexibility and correctness of the code across different network contexts, which is important for maintaining accurate functionality in a multi-network environment. | 6 | |
Performance |
Improve performance by memoizing the campaigns object___ **Consider memoizing thecampaigns object to avoid unnecessary re-renders and computations, especially if it relies on data that does not change frequently.** [explorer/src/components/TestnetRewards/TestnetRewardsTable.tsx [126-128]](https://github.com/autonomys/astral/pull/924/files#diff-35e3074a14443524d99d3004b4fa803bb33ed43a0649f85383a66ac28bdc1e76R126-R128) ```diff -const campaigns: Record Suggestion importance[1-10]: 5Why: Memoizing the campaigns object can potentially improve performance by avoiding unnecessary re-renders, although the impact may be moderate depending on the frequency of updates and complexity of the object. | 5 |
Optimize entity creation by removing redundant fields___ **Optimize the creation of new entities by checking the necessity of each field andremoving any redundant or unused fields.** [indexers/mainnet/staking/src/mappings/db.ts [37]](https://github.com/autonomys/astral/pull/924/files#diff-86b8a40e16b8cf563207beb553fd0e739a0c25d54d3c6697578084d68c60c85dR37-R37) ```diff domain = Domain.create({ id, - sortId: BigInt(id), ... }); ``` Suggestion importance[1-10]: 5Why: While the suggestion to remove redundant fields could potentially simplify the entity creation, it lacks specific details on which fields are redundant and why. The suggestion is somewhat valid but needs more precise details to be fully actionable. | 5 |
User description
Sync prod with main
Including
919
920
923
PR Type
Enhancement, Configuration changes
Description
Changes walkthrough ๐
7 files
mappingHandlers.ts
Implement staking event and call handlers for mainnet
indexers/mainnet/staking/src/mappings/mappingHandlers.ts
registration.
db.ts
Add database helper functions for staking entities
indexers/mainnet/staking/src/mappings/db.ts
accounts, and operators.
Account, Operator, etc.
db.ts
Implement leaderboard database operations for mainnet
indexers/mainnet/leaderboard/src/mappings/db.ts
mappingHandlers.ts
Add leaderboard event handlers for mainnet indexers
indexers/mainnet/leaderboard/src/mappings/mappingHandlers.ts
mappingHandlers.ts
Implement consensus event and call handlers for mainnet
indexers/mainnet/consensus/src/mappings/mappingHandlers.ts
db.ts
Add database operations for consensus data management
indexers/mainnet/consensus/src/mappings/db.ts
helper.ts
Add helper functions for consensus operations
indexers/mainnet/consensus/src/mappings/helper.ts
4 files
project.ts
Configure staking project with event and call handlers
indexers/mainnet/staking/project.ts
project.ts
Configure leaderboard project with event handlers
indexers/mainnet/leaderboard/project.ts
project.ts
Configure consensus project with block and event handlers
indexers/mainnet/consensus/project.ts
general.ts
Add constant for testnet address prefix
explorer/src/constants/general.ts - Introduced a new constant `SUBSPACE_ACC_PREFIX_TESTNET`.
107 files
TestnetRewardsTable.tsx
...
explorer/src/components/TestnetRewards/TestnetRewardsTable.tsx ...
models.ts
...
indexers/mainnet/staking/src/mappings/models.ts ...
utils.ts
...
indexers/mainnet/consensus/src/mappings/utils.ts ...
helper.ts
...
indexers/mainnet/leaderboard/src/mappings/helper.ts ...
project.ts
...
indexers/taurus/consensus/project.ts ...
project.ts
...
indexers/taurus/leaderboard/project.ts ...
project.ts
...
indexers/taurus/staking/project.ts ...
formatAddress.ts
...
explorer/src/utils/formatAddress.ts ...
types.ts
...
indexers/mainnet/consensus/src/mappings/types.ts ...
index.ts
...
indexers/mainnet/consensus/src/index.ts ...
index.ts
...
indexers/mainnet/leaderboard/src/index.ts ...
index.ts
...
indexers/mainnet/staking/src/index.ts ...
constants.ts
...
indexers/mainnet/staking/src/mappings/constants.ts ...
db.js
...
indexers/taskboard/utils/db.js ...
index.js
...
indexers/taskboard/constants/index.js ...
docker-compose.yml
...
docker-compose.yml ...
schema.graphql
...
indexers/mainnet/staking/schema.graphql ...
schema.graphql
...
indexers/mainnet/leaderboard/schema.graphql ...
schema.graphql
...
indexers/mainnet/consensus/schema.graphql ...
.env
...
.env ...
staking_domains.yaml
...
indexers/db/metadata/databases/default/tables/staking_domains.yaml ...
staking_operators.yaml
...
indexers/db/metadata/databases/default/tables/staking_operators.yaml ...
docker-compose.prod.yml
...
docker-compose.prod.yml ...
staking_nominators.yaml
...
indexers/db/metadata/databases/default/tables/staking_nominators.yaml ...
package.json
...
indexers/package.json ...
package.json
...
indexers/mainnet/consensus/package.json ...
tables.yaml
...
indexers/db/metadata/databases/default/tables/tables.yaml ...
README.md
...
indexers/mainnet/README.md ...
package.json
...
indexers/mainnet/leaderboard/package.json ...
package.json
...
indexers/mainnet/staking/package.json ...
README.md
...
indexers/mainnet/staking/README.md ...
README.md
...
indexers/mainnet/consensus/README.md ...
README.md
...
indexers/mainnet/leaderboard/README.md ...
consensus_extrinsics.yaml
...
indexers/db/metadata/databases/default/tables/consensus_extrinsics.yaml ...
consensus_blocks.yaml
...
indexers/db/metadata/databases/default/tables/consensus_blocks.yaml ...
staking_withdrawals.yaml
...
indexers/db/metadata/databases/default/tables/staking_withdrawals.yaml ...
consensus_events.yaml
...
indexers/db/metadata/databases/default/tables/consensus_events.yaml ...
staking_deposits.yaml
...
indexers/db/metadata/databases/default/tables/staking_deposits.yaml ...
README.md
...
indexers/gemini-3h/README.md ...
README.md
...
indexers/taurus/README.md ...
consensus_accounts.yaml
...
indexers/db/metadata/databases/default/tables/consensus_accounts.yaml ...
consensus_logs.yaml
...
indexers/db/metadata/databases/default/tables/consensus_logs.yaml ...
consensus_rewards.yaml
...
indexers/db/metadata/databases/default/tables/consensus_rewards.yaml ...
consensus_account_profiles.yaml
...
indexers/db/metadata/databases/default/tables/consensus_account_profiles.yaml ...
consensus_extrinsic_modules.yaml
...
indexers/db/metadata/databases/default/tables/consensus_extrinsic_modules.yaml ...
consensus_event_modules.yaml
...
indexers/db/metadata/databases/default/tables/consensus_event_modules.yaml ...
LICENSE
...
indexers/mainnet/consensus/LICENSE ...
LICENSE
...
indexers/mainnet/leaderboard/LICENSE ...
LICENSE
...
indexers/mainnet/staking/LICENSE ...
consensus_account_rewards.yaml
...
indexers/db/metadata/databases/default/tables/consensus_account_rewards.yaml ...
consensus_sections.yaml
...
indexers/db/metadata/databases/default/tables/consensus_sections.yaml ...
consensus_account_histories.yaml
...
indexers/db/metadata/databases/default/tables/consensus_account_histories.yaml ...
consensus_log_kinds.yaml
...
indexers/db/metadata/databases/default/tables/consensus_log_kinds.yaml ...
consensus_transfers.yaml
...
indexers/db/metadata/databases/default/tables/consensus_transfers.yaml ...
staking_accounts.yaml
...
indexers/db/metadata/databases/default/tables/staking_accounts.yaml ...
tsconfig.json
...
indexers/mainnet/consensus/tsconfig.json ...
tsconfig.json
...
indexers/mainnet/leaderboard/tsconfig.json ...
tsconfig.json
...
indexers/mainnet/staking/tsconfig.json ...
lerna.json
...
indexers/lerna.json ...
package.json
...
indexers/gemini-3h/consensus/package.json ...
init-db.sql
...
indexers/db/docker-entrypoint-initdb.d/init-db.sql ...
package.json
...
indexers/taurus/consensus/package.json ...
astral.code-workspace
...
.vscode/astral.code-workspace ...
leaderboard_nominator_deposits_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_nominator_deposits_total_counts.yaml ...
leaderboard_nominator_deposits_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_nominator_deposits_total_values.yaml ...
leaderboard_nominator_withdrawals_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_nominator_withdrawals_total_counts.yaml ...
leaderboard_farmer_vote_and_block_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_farmer_vote_and_block_total_counts.yaml ...
leaderboard_farmer_vote_and_block_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_farmer_vote_and_block_total_values.yaml ...
leaderboard_account_extrinsic_failed_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_extrinsic_failed_total_counts.yaml ...
leaderboard_account_extrinsic_success_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_extrinsic_success_total_counts.yaml ...
leaderboard_account_transaction_fee_paid_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_transaction_fee_paid_total_values.yaml ...
leaderboard_operator_deposits_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_operator_deposits_total_counts.yaml ...
leaderboard_operator_deposits_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_operator_deposits_total_values.yaml ...
leaderboard_operator_total_rewards_collecteds.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_operator_total_rewards_collecteds.yaml ...
leaderboard_operator_total_tax_collecteds.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_operator_total_tax_collecteds.yaml ...
leaderboard_operator_withdrawals_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_operator_withdrawals_total_counts.yaml ...
leaderboard_account_extrinsic_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_extrinsic_total_counts.yaml ...
leaderboard_account_transfer_receiver_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_transfer_receiver_total_counts.yaml ...
leaderboard_account_transfer_receiver_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_transfer_receiver_total_values.yaml ...
leaderboard_account_transfer_sender_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_transfer_sender_total_counts.yaml ...
leaderboard_account_transfer_sender_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_transfer_sender_total_values.yaml ...
leaderboard_farmer_block_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_farmer_block_total_counts.yaml ...
leaderboard_farmer_block_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_farmer_block_total_values.yaml ...
leaderboard_farmer_vote_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_farmer_vote_total_counts.yaml ...
leaderboard_farmer_vote_total_values.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_farmer_vote_total_values.yaml ...
leaderboard_account_remark_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_account_remark_counts.yaml ...
leaderboard_operator_bundle_total_counts.yaml
...
indexers/db/metadata/databases/default/tables/leaderboard_operator_bundle_total_counts.yaml ...
dictionary_extrinsics.yaml
...
indexers/db/metadata/databases/default/tables/dictionary_extrinsics.yaml ...
package.json
...
indexers/gemini-3g/testnet-rewards/package.json ...
dictionary_events.yaml
...
indexers/db/metadata/databases/default/tables/dictionary_events.yaml ...
dictionary_spec_versions.yaml
...
indexers/db/metadata/databases/default/tables/dictionary_spec_versions.yaml ...
typegen.json
...
indexers/mainnet/consensus/typegen.json ...
dictionary
...
indexers/dictionary ...
up.sql
...
indexers/db/migrations/default/1730310960555_alter_table_consensus_extrinsic_modules_alter_column_id/up.sql ...
up.sql
...
indexers/db/migrations/default/1730311021220_alter_table_consensus_log_kinds_alter_column_id/up.sql ...
up.sql
...
indexers/db/migrations/default/1730310946777_alter_table_consensus_event_modules_alter_column_id/up.sql ...
up.sql
...
indexers/db/migrations/default/1730310983740_alter_table_consensus_account_profiles_alter_column_id/up.sql ...
up.sql
...
indexers/db/migrations/default/1730310997319_alter_table_consensus_account_rewards_alter_column_id/up.sql ...
down.sql
...
indexers/db/migrations/default/1730310960555_alter_table_consensus_extrinsic_modules_alter_column_id/down.sql ...
down.sql
...
indexers/db/migrations/default/1730311021220_alter_table_consensus_log_kinds_alter_column_id/down.sql ...
up.sql
...
indexers/db/migrations/default/1730310914662_alter_table_consensus_sections_alter_column_id/up.sql ...
up.sql
...
indexers/db/migrations/default/1730310972982_alter_table_consensus_accounts_alter_column_id/up.sql ...
down.sql
...
indexers/db/migrations/default/1730310946777_alter_table_consensus_event_modules_alter_column_id/down.sql ...
down.sql
...
indexers/db/migrations/default/1730310983740_alter_table_consensus_account_profiles_alter_column_id/down.sql ...
down.sql
...
indexers/db/migrations/default/1730310997319_alter_table_consensus_account_rewards_alter_column_id/down.sql ...
down.sql
...
indexers/db/migrations/default/1730310914662_alter_table_consensus_sections_alter_column_id/down.sql ...
down.sql
...
indexers/db/migrations/default/1730310972982_alter_table_consensus_accounts_alter_column_id/down.sql ...