-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add athena tables for affiliates/vaults. #2636
Conversation
WalkthroughThis pull request introduces three new TypeScript files: Changes
Possibly related PRs
Suggested labels
Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Outside diff range and nitpick comments (1)
indexer/services/roundtable/src/lib/athena-ddl-tables/affiliate_referred_users.ts (1)
19-26
: Consider adding input validation for tablePrefixThe implementation looks good, but consider adding validation for the
tablePrefix
parameter to prevent any potential SQL injection, even though the helper functions likely handle this.export function generateRawTable(tablePrefix: string, rdsExportIdentifier: string): string { + if (!/^[a-zA-Z0-9_]+$/.test(tablePrefix)) { + throw new Error('Invalid table prefix'); + } return getExternalAthenaTableCreationStatement( tablePrefix, rdsExportIdentifier, TABLE_NAME, RAW_TABLE_COLUMNS, ); }Also applies to: 28-34
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (4)
indexer/services/roundtable/src/lib/athena-ddl-tables/affiliate_info.ts
(1 hunks)indexer/services/roundtable/src/lib/athena-ddl-tables/affiliate_referred_users.ts
(1 hunks)indexer/services/roundtable/src/lib/athena-ddl-tables/vaults.ts
(1 hunks)indexer/services/roundtable/src/tasks/update-research-environment.ts
(2 hunks)
🔇 Additional comments (4)
indexer/services/roundtable/src/lib/athena-ddl-tables/affiliate_referred_users.ts (1)
8-12
: LGTM: Schema definition is clear and appropriate
The schema correctly captures the essential fields for tracking affiliate referrals with appropriate data types:
referredAddress
andaffiliateAddress
as strings for blockchain addressesreferredAtBlock
as bigint for block height reference
indexer/services/roundtable/src/lib/athena-ddl-tables/vaults.ts (1)
15-21
: Verify status field constraints
The status
field is defined as a string without any apparent constraints. Consider if this should be an enum type or have specific allowed values.
indexer/services/roundtable/src/tasks/update-research-environment.ts (2)
40-42
: LGTM! Import statements are properly structured.
The new imports follow the existing pattern and maintain alphabetical ordering.
64-66
: Verify the table definition files and schemas.
The table additions look good, but let's verify:
- The existence of the table definition files
- The proper implementation of
generateRawTable
andgenerateTable
functions - The correctness of the table schemas for the affiliate/vault feature
✅ Verification successful
The previous script confirmed the existence of all three table definition files and their generateRawTable
and generateTable
functions, but we need to examine the actual table schemas. This new script will help us verify the table definitions and their schemas.
Table definitions and schemas have been verified successfully
All three table definition files are properly implemented with:
- Correct
generateRawTable
andgenerateTable
functions - Well-defined schemas matching the affiliate/vault feature requirements:
affiliate_info
: Tracks affiliate earnings, referred trades, and fee metricsaffiliate_referred_users
: Maps referred addresses to affiliate addressesvaults
: Stores vault information with CLOB pair associations
The schemas include appropriate type casting (double for financial values, timestamp for dates) and all necessary columns for the feature.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify the existence and implementation of the new table definition files
# Check if the table definition files exist
echo "Checking table definition files..."
for file in affiliate_info affiliate_referred_users vaults; do
if [ -f "indexer/services/roundtable/src/lib/athena-ddl-tables/${file}.ts" ]; then
echo "✓ ${file}.ts exists"
# Check for required function implementations
echo "Checking ${file}.ts implementation..."
rg -A 1 "export function generate(Raw)?Table" "indexer/services/roundtable/src/lib/athena-ddl-tables/${file}.ts"
else
echo "✗ ${file}.ts not found"
fi
done
# Check table schemas
echo -e "\nChecking table schemas..."
for file in affiliate_info affiliate_referred_users vaults; do
echo "Schema for ${file}:"
rg "CREATE TABLE" "indexer/services/roundtable/src/lib/athena-ddl-tables/${file}.ts" -A 10
done
Length of output: 2860
Script:
#!/bin/bash
# Let's try a different approach to check the table schemas
# Check the content of the table definition files
for file in affiliate_info affiliate_referred_users vaults; do
echo "=== Content of ${file}.ts ==="
cat "indexer/services/roundtable/src/lib/athena-ddl-tables/${file}.ts"
echo -e "\n"
done
Length of output: 3751
indexer/services/roundtable/src/lib/athena-ddl-tables/vaults.ts
Outdated
Show resolved
Hide resolved
indexer/services/roundtable/src/lib/athena-ddl-tables/affiliate_info.ts
Outdated
Show resolved
Hide resolved
indexer/services/roundtable/src/lib/athena-ddl-tables/affiliate_info.ts
Outdated
Show resolved
Hide resolved
indexer/services/roundtable/src/lib/athena-ddl-tables/affiliate_info.ts
Outdated
Show resolved
Hide resolved
@Mergifyio backport release/indexer/v7.x |
✅ Backports have been created
|
(cherry picked from commit f95f663)
Co-authored-by: vincentwschau <[email protected]>
@Mergifyio backport release/indexer/v8.x |
✅ Backports have been created
|
(cherry picked from commit f95f663)
Co-authored-by: vincentwschau <[email protected]>
Changelist
[Describe or list the changes made in this PR]
Test Plan
[Describe how this PR was tested (if applicable)]
Author/Reviewer Checklist
state-breaking
label.indexer-postgres-breaking
label.PrepareProposal
orProcessProposal
, manually add the labelproposal-breaking
.feature:[feature-name]
.backport/[branch-name]
.refactor
,chore
,bug
.Summary by CodeRabbit
New Features
Bug Fixes
Chores