docs: extend ENS Unigraph examples#2264
Conversation
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughCentralizes Unigraph SQL/SDK examples into typed TypeScript modules, updates the example renderer to consume optional HTML result notes, refactors MDX pages to import shared examples, adds five new example pages, and updates sidebar navigation and CSS selectors to surface the examples. ChangesUnigraph Example Documentation System
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR expands the ENS Unigraph documentation by refactoring existing examples and adding six new ones (domain events, fuzzy search, subdomains, account domains, latest registrations, expiring registrations, and indexing status). Example data is moved into dedicated TypeScript files under
Confidence Score: 5/5Documentation-only change with no runtime code paths; safe to merge. All changes are confined to static documentation files — TypeScript data objects, MDX pages, and a sidebar config. Every previously flagged issue has been corrected in this revision. The one remaining note (null subregistryId values in an inArray call inside a code snippet) is a non-blocking documentation quality concern that does not affect the site's runtime behaviour. docs/ensnode.io/src/data/unigraph-examples/subdomains-by-parent-name.ts — the SDK snippet's inArray call may silently return empty results when a parent domain has a null subregistryId. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[.mdx example page] -->|imports| B[unigraph-examples/*.ts]
B --> C{QueryExample}
C --> D[sql.codeSnippet\nraw SQL string]
C --> E[sdk.codeSnippet\nDrizzle ORM string]
C --> F[sql.result\nstatic fixture]
C --> G[sdk.result\nstatic fixture]
C --> H[resultNote\noutputSource helper]
H --> I[utils.ts\noutputSource + EnsNodeInstances]
B --> J[types.ts\nCodeExample / QueryExample]
A --> K[UnigraphStaticExample.astro\nrenders code + result]
Reviews (10): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile |
There was a problem hiding this comment.
Pull request overview
This PR expands the ENS Unigraph SQL examples in the docs by moving example payloads into dedicated data modules and adding several new example pages that import those modules for rendering.
Changes:
- Introduced a small
QueryExample/CodeExampletype contract and added multiple new Unigraph example data files (SQL +ensdb-sdksnippets + static results). - Added new MDX pages for each example and refactored existing pages to import examples from
@data/unigraph-examples/.... - Updated the Integrate sidebar to include the expanded Unigraph examples navigation.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/ensnode.io/src/data/unigraph-examples/types.ts | Adds shared TS types for example payloads. |
| docs/ensnode.io/src/data/unigraph-examples/subdomains-by-parent-name.ts | Adds subdomains-by-parent SQL/SDK example + result fixture. |
| docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts | Adds latest-registrations SQL/SDK example + result fixture. |
| docs/ensnode.io/src/data/unigraph-examples/indexing-status.ts | Adds indexing-status SQL/SDK example + result fixture. |
| docs/ensnode.io/src/data/unigraph-examples/expiring-registrations.ts | Adds expiring-registrations SQL/SDK example + result fixture. |
| docs/ensnode.io/src/data/unigraph-examples/domains-fuzzy-search-by-name.ts | Adds pg_trgm-based fuzzy name search example + result fixture. |
| docs/ensnode.io/src/data/unigraph-examples/domain-events.ts | Adds domain events join example + result fixture. |
| docs/ensnode.io/src/data/unigraph-examples/domain-by-name.ts | Adds canonical-name lookup example + result fixture. |
| docs/ensnode.io/src/data/unigraph-examples/account-domains.ts | Adds “domains owned by address” example + result fixture. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/subdomains-by-parent-name.mdx | New example page wiring the data module into the UI component. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/latest-registrations.mdx | New example page wiring the data module into the UI component. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/indexing-status.mdx | Refactors existing page to import the new data module. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/expiring-registrations.mdx | New example page wiring the data module into the UI component. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domains-fuzzy-search-by-name.mdx | New example page wiring the data module into the UI component. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-events.mdx | New example page wiring the data module into the UI component. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-by-name.mdx | Refactors existing page to import the new data module. |
| docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/account-domains.mdx | Refactors existing page to import the new data module. |
| docs/ensnode.io/src/content/docs/docs/integrate/index.mdx | Updates integration option descriptions. |
| docs/ensnode.io/src/components/molecules/EnsDbReaderIntro.astro | Minor copy tweak referencing the “Connect” example. |
| docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts | Adds sidebar links for the expanded Unigraph example set. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 7
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts`:
- Around line 206-207: Correct the typo in the sidebar entry by changing the
label string "Exipring Registrations" to "Expiring Registrations"; locate the
object where label: "Exipring Registrations" appears (the same entry with link:
"/docs/integrate/unigraph/examples/expiring-registrations") and update the label
value to the spelled-correct form.
In
`@docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-events.mdx`:
- Line 17: The description paragraph starting with "Fetch recent events for a
Domain by its canonical name..." is missing the consistent setup reference;
update that paragraph (in the content of domain-events.mdx) to append the
sentence "See [Connect](/docs/integrate/unigraph/examples) for setup." so it
matches the other example pages (search for the exact paragraph text or the
file's title/section to locate where to insert this reference).
In `@docs/ensnode.io/src/data/unigraph-examples/account-domains.ts`:
- Around line 98-119: The example uses asc(...) in orderBy but never imports it;
update the import line in the codeSnippet to include asc (i.e., import { and,
eq, asc } from "drizzle-orm") so the call to asc in the accountDomains query
resolves correctly—modify the import near the top of the snippet where and and
eq are imported.
In `@docs/ensnode.io/src/data/unigraph-examples/expiring-registrations.ts`:
- Around line 3-5: Update the module JSDoc to describe expiring registrations
rather than recent events; replace the current summary line ("Example query for
fetching recent events for a Domain by its canonical name.") with a concise
description matching the file intent such as "Example query for fetching
expiring registrations for a Domain" (or similar phrasing) in the top comment of
expiring-registrations.ts so the documentation matches the query implemented in
this module.
In `@docs/ensnode.io/src/data/unigraph-examples/indexing-status.ts`:
- Around line 119-130: The example outputs incorrectly nest indexingStatus one
level too deep; update the result objects so they use
indexingStatusSnapshot.indexingStatus instead of { indexingStatus:
indexingStatusSnapshot } (i.e., set result to { indexingStatus:
indexingStatusSnapshot.indexingStatus }) for both occurrences referenced around
indexingStatusSnapshot and the SDK snippet constants to match the SQL/SDK
examples.
In `@docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts`:
- Around line 8-24: The SQL in the codeSnippet currently selects five columns
(d.canonical_name, r.start, r.expiry, d.owner_id, d.id AS domain_id) with LIMIT
15 but the documented result payload contains additional registration columns
and only five rows; make them consistent by either (A) expanding the SELECT in
the codeSnippet to include the extra registration fields shown in the result
(e.g., add r.transaction_hash, r.registration_index, r.type, etc.) and keep
LIMIT 5 if the example intends five rows, or (B) update the result block to
match the current SQL (only the five selected columns and 15 rows); locate the
codeSnippet string in latest-registrations.ts and change the SELECT column list
and LIMIT (or the result block) accordingly so both the query and the documented
result match exactly.
- Around line 89-127: The code snippet is missing the desc import and the SQL
example's selected columns and LIMIT don't match the shown result objects;
update the drizzle import to include desc (alongside and, asc, eq, ne, lte, sql)
so the call to desc(ensIndexerSchema.registration.start) is valid, and then make
the SELECT and LIMIT in the SQL example consistent with the JavaScript query and
example output—either change the SQL SELECT to return the same fields as
recentRegistrations (canonicalName, expiry, start,
registrationType/registration.type, ownerId, domainId) and set LIMIT 5, or alter
the JS select to include grace_period/base/premium/registration_type and use
LIMIT 15 to match the displayed result—ensure recentRegistrations, desc, and the
SQL SELECT/LIMIT are aligned.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 246d12cd-2c73-4f09-9279-aed3c5020bc8
📒 Files selected for processing (20)
docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.tsdocs/ensnode.io/src/components/molecules/EnsDbReaderIntro.astrodocs/ensnode.io/src/content/docs/docs/integrate/index.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/account-domains.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-by-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-events.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domains-fuzzy-search-by-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/expiring-registrations.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/indexing-status.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/latest-registrations.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/subdomains-by-parent-name.mdxdocs/ensnode.io/src/data/unigraph-examples/account-domains.tsdocs/ensnode.io/src/data/unigraph-examples/domain-by-name.tsdocs/ensnode.io/src/data/unigraph-examples/domain-events.tsdocs/ensnode.io/src/data/unigraph-examples/domains-fuzzy-search-by-name.tsdocs/ensnode.io/src/data/unigraph-examples/expiring-registrations.tsdocs/ensnode.io/src/data/unigraph-examples/indexing-status.tsdocs/ensnode.io/src/data/unigraph-examples/latest-registrations.tsdocs/ensnode.io/src/data/unigraph-examples/subdomains-by-parent-name.tsdocs/ensnode.io/src/data/unigraph-examples/types.ts
66e5135 to
2b41753
Compare
There was a problem hiding this comment.
Actionable comments posted: 8
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts (1)
98-104: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick winAlign SDK field selection with the SQL example.
The SQL snippet (lines 8-17) selects
grace_period,base, andpremiumfrom the registration table, but the SDK.select()block omits these fields. This creates an inconsistency between the two examples—users comparing SQL vs SDK approaches will see different output shapes.🔄 Suggested alignment
const recentRegistrations = await ensDb .select({ canonicalName: ensIndexerSchema.domain.canonicalName, expiry: ensIndexerSchema.registration.expiry, start: ensIndexerSchema.registration.start, + gracePeriod: ensIndexerSchema.registration.gracePeriod, + base: ensIndexerSchema.registration.base, + premium: ensIndexerSchema.registration.premium, registrationType: ensIndexerSchema.registration.type, ownerId: ensIndexerSchema.domain.ownerId, domainId: ensIndexerSchema.domain.id, })Then update the SDK result array (lines 135-181) to include
gracePeriod,base, andpremiumin each row to match the SQL result payload.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts` around lines 98 - 104, The SDK .select(...) call currently selects canonicalName, expiry, start, registrationType, ownerId, and domainId but omits the registration fields selected in the SQL example; update the .select invocation to also include ensIndexerSchema.registration.grace_period, ensIndexerSchema.registration.base, and ensIndexerSchema.registration.premium (mapped to SDK names like gracePeriod, base, premium as needed) so the SDK projection matches the SQL example, and then update the example SDK result array (the result rows shown later) to add gracePeriod, base, and premium to each row so the returned payload shape mirrors the SQL output.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/ensapi/src/handlers/api/test/test-queries-api.ts`:
- Around line 165-207: The /fuzzy-search route handler lacks input validation
and error handling; add a Zod schema and apply the validate() middleware to
parse/validate query params (q as non-empty string and limit as a positive
integer with a sensible default) for the app.get("/fuzzy-search", ...) route,
then wrap the database calls that use di.context.ensDb (the sqlResult and
drizzleResult queries) in a try-catch and call the existing errorResponse helper
in the catch to return a formatted error and avoid throwing raw errors to the
client.
- Around line 211-285: The /expiring route handler (app.get("/expiring")) lacks
input validation and error handling: create a Zod schema for start, end, and
limit and apply the validate() middleware to the route (use the same param names
used in the handler), then wrap the database calls that use ensDb and
ensIndexerSchema in a try-catch and return errors via the errorResponse helper;
on validation success parse and pass the validated start/end/limit into the
query and keep returning jsonBigInt on success.
- Around line 60-122: The /subdomains handler lacks input validation, error
handling, explicit missing-parent responses, and contains a debug console.log;
update the app.get("/subdomains", async (c) => { ... }) route to: validate query
params using a Zod schema (name:string, limit:number) via the validate()
middleware, wrap the database work that uses ensDb and ensIndexerSchema in a
try-catch and return errors using the errorResponse helper on catch, remove the
console.log(subdomains) call, and when parentDomain or
parentDomain.subregistryId is falsy return a clear errorResponse (e.g., 404 or
validation-style error) instead of falling through to an implicit undefined
return. Ensure you reference the existing symbols parentDomain and subdomains
when implementing these checks.
- Around line 392-445: The /domain-events route handler is missing input
validation and error handling; add a Zod schema for the query params (validate
name as string and limit as optional positive integer with a max), apply the
validate() middleware to this route so the handler uses the validated values
instead of raw c.req.query, and wrap the DB calls (the RAW SQL block and the
DRIZZLE select chain) in a try-catch that returns the standardized
errorResponse(...) on failure (use the same errorResponse helper used elsewhere
in this app); refer to the route handler for "/domain-events", the local
variables name and limit, and the DB usage via ensDb, ensIndexerSchema to locate
where to apply the validate() middleware and try-catch.
- Around line 26-57: The GET /domain-by-name handler is missing input
validation, lacks error handling, and contains a debug console.log; add a Zod
schema for the "name" query param and call the existing validate() middleware
(from apps/ensapi/src/lib/handlers/validate.ts) to validate c.req.query before
running DB logic, wrap the DB calls in a try-catch and on error return the
shared errorResponse(...) helper (from
apps/ensapi/src/lib/handlers/error-response.ts) with the caught error, and
remove the console.log(vitalik) statement; keep using the same
functions/variables in the handler (app.get("/domain-by-name"), ensDb,
ensIndexerSchema, jsonBigInt) but ensure validation runs first and DB errors are
caught and mapped to errorResponse.
- Around line 125-162: Replace the hardcoded owner and limit in the
app.get("/account-domains", async (c) => { ... }) handler by reading
c.req.query("owner") and c.req.query("limit"), add a Zod schema for those query
params and apply the existing validate() middleware for this route, wrap the
database calls (ensDb.execute and ensDb.select(...) usages referencing
ensIndexerSchema) in a try-catch and call the shared errorResponse helper on
failure, and ensure the successful response still returns jsonBigInt({ owner,
sql: sqlResult.rows, drizzle: drizzleResult }) after parsing/normalizing the
validated limit to a number.
- Around line 288-355: The /recent-registrations route handler is missing input
validation and error handling; add a Zod schema for the query param (limit) and
apply the validate() middleware before this handler, and wrap the DB calls
(ensDb.execute and the Drizzle query producing sqlResult and drizzleResult) in a
try-catch that returns the centralized errorResponse helper on failure; ensure
the validated limit is used (instead of raw parseInt) and that any caught error
is passed to errorResponse so the route fails gracefully.
- Around line 358-389: The /permissions handler returns inconsistent data and
lacks validation/error handling: validate the incoming user query using the
project's Zod schema via the validate() middleware, wrap the DB calls (the raw
SQL execute returning sqlResult and the Drizzle select producing drizzleResult)
in a try-catch and call the errorResponse helper on failure, and return
sqlResult.rows (not sqlResult) alongside drizzleResult in the jsonBigInt
response; update the app.get("/permissions") handler to perform these changes
around the existing ensDb/ensIndexerSchema usage so consumers always receive the
same array format and errors are handled.
---
Outside diff comments:
In `@docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts`:
- Around line 98-104: The SDK .select(...) call currently selects canonicalName,
expiry, start, registrationType, ownerId, and domainId but omits the
registration fields selected in the SQL example; update the .select invocation
to also include ensIndexerSchema.registration.grace_period,
ensIndexerSchema.registration.base, and ensIndexerSchema.registration.premium
(mapped to SDK names like gracePeriod, base, premium as needed) so the SDK
projection matches the SQL example, and then update the example SDK result array
(the result rows shown later) to add gracePeriod, base, and premium to each row
so the returned payload shape mirrors the SQL output.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 829bd0dd-5833-4726-892a-6bdd6fa62b2f
📒 Files selected for processing (11)
apps/ensapi/src/handlers/api/router.tsapps/ensapi/src/handlers/api/test/test-queries-api.tsdocs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.tsdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/account-domains.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-by-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-events.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/expiring-registrations.mdxdocs/ensnode.io/src/data/unigraph-examples/account-domains.tsdocs/ensnode.io/src/data/unigraph-examples/expiring-registrations.tsdocs/ensnode.io/src/data/unigraph-examples/indexing-status.tsdocs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
docs/ensnode.io/src/data/unigraph-examples/domain-events.ts (1)
11-31:⚠️ Potential issue | 🔴 Critical | ⚡ Quick winSQL syntax error: missing comma after
selector.Line 20 ends with
e.selectorbut is missing the trailing comma beforee.topics,on line 21. This will cause a SQL parse error when the query is executed.🐛 Proposed fix
e.sender, e.from, e.to, - e.selector + e.selector, e.topics, e.data, d.id as domain_id🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/ensnode.io/src/data/unigraph-examples/domain-events.ts` around lines 11 - 31, The SQL query in the codeSnippet has a missing comma after the select column e.selector which causes a parse error; update the SELECT list in domain-events.ts (the codeSnippet string) to add a comma after e.selector so the columns read "... e.selector, e.topics, e.data, d.id as domain_id ..." ensuring the SELECT list is properly comma-separated and the query executes.docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts (2)
86-185:⚠️ Potential issue | 🟠 Major | ⚡ Quick winSDK select fields don't match documented result objects.
The SDK query selects 9 fields including
base(line 97) andpremium(line 98), but theresultarray (lines 132-183) only contains 7 fields—baseandpremiumare missing. This matches the same inconsistency in the SQL example.Apply the same fix as the SQL variant: either remove the fields from the select or add them to the result objects.
🔧 Option 1: Remove from select
.select({ canonicalName: ensIndexerSchema.domain.canonicalName, start: ensIndexerSchema.registration.start, expiry: ensIndexerSchema.registration.expiry, gracePeriod: ensIndexerSchema.registration.gracePeriod, - base: ensIndexerSchema.registration.base, - premium: ensIndexerSchema.registration.premium, registrationType: ensIndexerSchema.registration.type, ownerId: ensIndexerSchema.domain.ownerId, domainId: ensIndexerSchema.domain.id, })🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts` around lines 86 - 185, The SDK select includes ensIndexerSchema.registration.base and .premium but the example result objects (recentRegistrations result) omit those fields; update the example to include base and premium in each result object (matching the selected fields) or alternatively remove .base and .premium from the select — modify either the select block that builds recentRegistrations (references: recentRegistrations, ensIndexerSchema.registration.base, ensIndexerSchema.registration.premium) and the example result array so both sides match (add base and premium entries to each object with example values if you choose to add them).
11-84:⚠️ Potential issue | 🟠 Major | ⚡ Quick winSQL SELECT fields don't match documented result objects.
The SQL query selects 9 fields including
r.base(line 16) andr.premium(line 17), but theresultarray (lines 32-83) only contains 7 fields—baseandpremiumare missing from every result object. Users copying this example will get different output than documented.Either:
- Remove
baseandpremiumfrom the SQL SELECT to match the results, OR- Add
baseandpremiumfields to each result object🔧 Option 1: Remove from SELECT
SELECT d.canonical_name, r.start, r.expiry, r.grace_period, - r.base, - r.premium, r.type as registration_type, d.owner_id, d.id as domain_id🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts` around lines 11 - 84, The SELECT includes r.base and r.premium but the result array lacks those keys; fix by either removing r.base and r.premium from the SQL snippet in codeSnippet to match the current result objects, or (preferred) add base and premium properties to every object in the result array so the documented output matches the SELECT (update each result object next to canonical_name/start/expiry/... to include base and premium fields). Ensure you update the codeSnippet's SELECT or the result array consistently for r.base and r.premium.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@docs/ensnode.io/src/data/unigraph-examples/domain-events.ts`:
- Around line 11-31: The SQL query in the codeSnippet has a missing comma after
the select column e.selector which causes a parse error; update the SELECT list
in domain-events.ts (the codeSnippet string) to add a comma after e.selector so
the columns read "... e.selector, e.topics, e.data, d.id as domain_id ..."
ensuring the SELECT list is properly comma-separated and the query executes.
In `@docs/ensnode.io/src/data/unigraph-examples/latest-registrations.ts`:
- Around line 86-185: The SDK select includes ensIndexerSchema.registration.base
and .premium but the example result objects (recentRegistrations result) omit
those fields; update the example to include base and premium in each result
object (matching the selected fields) or alternatively remove .base and .premium
from the select — modify either the select block that builds recentRegistrations
(references: recentRegistrations, ensIndexerSchema.registration.base,
ensIndexerSchema.registration.premium) and the example result array so both
sides match (add base and premium entries to each object with example values if
you choose to add them).
- Around line 11-84: The SELECT includes r.base and r.premium but the result
array lacks those keys; fix by either removing r.base and r.premium from the SQL
snippet in codeSnippet to match the current result objects, or (preferred) add
base and premium properties to every object in the result array so the
documented output matches the SELECT (update each result object next to
canonical_name/start/expiry/... to include base and premium fields). Ensure you
update the codeSnippet's SELECT or the result array consistently for r.base and
r.premium.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: de15c735-afdd-41ea-b646-371ef55782fb
📒 Files selected for processing (22)
docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.tsdocs/ensnode.io/src/components/molecules/EnsUnigraphIntro.astrodocs/ensnode.io/src/content/docs/docs/integrate/unigraph/concepts.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/account-domains.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-by-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-events.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domains-fuzzy-search-by-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/expiring-registrations.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/index.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/indexing-status.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/latest-registrations.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/subdomains-by-parent-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/unigraph/index.mdxdocs/ensnode.io/src/data/unigraph-examples/account-domains.tsdocs/ensnode.io/src/data/unigraph-examples/domain-by-name.tsdocs/ensnode.io/src/data/unigraph-examples/domain-events.tsdocs/ensnode.io/src/data/unigraph-examples/domains-fuzzy-search-by-name.tsdocs/ensnode.io/src/data/unigraph-examples/expiring-registrations.tsdocs/ensnode.io/src/data/unigraph-examples/latest-registrations.tsdocs/ensnode.io/src/data/unigraph-examples/subdomains-by-parent-name.tsdocs/ensnode.io/src/data/unigraph-examples/utils.tsdocs/ensnode.io/src/styles/starlight.css
💤 Files with no reviewable changes (7)
- docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/expiring-registrations.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/latest-registrations.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domains-fuzzy-search-by-name.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/account-domains.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/domain-by-name.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/indexing-status.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/unigraph/examples/subdomains-by-parent-name.mdx
shrugs
left a comment
There was a problem hiding this comment.
I just spot checked the documentation preview and it looks great to me.
Lite PR
Tip: Review docs on the ENSNode PR process
Summary
Why
Testing
Notes for Reviewer (Optional)
Pre-Review Checklist (Blocking)