Skip to content

feat(data-warehouse): server-side search for the OAuth account picker - #70506

Merged
Gilbert09 merged 4 commits into
masterfrom
tom/oauth-account-search
Jul 14, 2026
Merged

feat(data-warehouse): server-side search for the OAuth account picker#70506
Gilbert09 merged 4 commits into
masterfrom
tom/oauth-account-search

Conversation

@Gilbert09

Copy link
Copy Markdown
Member

Problem

The backend-driven OAuth account picker (#65692) returns a source's full account list and the frontend filters it client-side. That's fine for a handful of ad accounts, but GitHub repositories can number in the thousands — so GitHub can't adopt the picker without server-side search.

Changes

  • Add an optional search query param to GET external_data_sources/oauth_accounts/, threaded to OAuthMixin.get_oauth_accounts(..., search=...). A shared filter_integration_accounts helper filters the returned list generically at the endpoint, so small-list sources (Bing Ads, Google Search Console) get search for free by ignoring the param; sources whose provider supports server-side search push it down.
  • Implement GithubSource.get_oauth_accounts, mapping repositories (owner/repo) to the IntegrationAccount contract via the existing list_cached_repositories — which resolves the stored integration token server-side, so the client only ever passes an integration id.

This is the backend foundation. Making GitHub's wizard actually use the picker (swapping its repository field to oauth-account-select, teaching the shared selector to resolve a nested integrationField, and wiring the popover search to the endpoint) is a follow-up, since those touch frontend codegen (kea-typegen + orval).

How did you test this?

pytest on the changed areas — 54 passing:

  • test_github_source_class.pyget_oauth_accounts maps repos, pushes search down to the lister, skips repos with no full_name, and raises an actionable error on a missing integration.
  • test_integration_accounts.pyfilter_integration_accounts case-insensitive matching across value / display_name / secondary_text.
  • TestOAuthAccountsEndpoint — new: search filters a source's returned list (GSC) and is pushed down for GitHub; plus the existing endpoint tests still pass.
  • ruff clean. No model change, so no migration.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Add an optional `search` query param to the external_data_sources
oauth_accounts endpoint and thread it to OAuthMixin.get_oauth_accounts.
Sources whose provider supports it (GitHub repositories) push the query
down for scale; small-list sources (Bing Ads, Google Search Console)
ignore it and a shared filter_integration_accounts helper filters the
returned list generically at the endpoint.

Also implement GithubSource.get_oauth_accounts, mapping repos to the
IntegrationAccount contract via the existing cached-repo lister (which
uses the stored integration token), so GitHub is ready to adopt the
generic account picker.

The wizard field swap + frontend (nested integrationField resolution +
server-side search wiring) that make GitHub actually use the picker are
a follow-up, since they need frontend codegen (kea-typegen + orval).
@greptile-apps

greptile-apps Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "feat(data-warehouse): server-side search..." | Re-trigger Greptile

@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
🛠️ Admin inspect & debug state in hogland
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit 2e29cad · box box-5bcd43a5c575 · ready in 871s (push → usable) · build log · rebuilds on every push, torn down on close

@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Bundle size — no change

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 64.34 MiB · no change

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.21 MiB · 22 files no change ███░░░░░░░ 28.1% of 4.29 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.10 MiB · 2,972 files no change █████████░ 87.5% of 9.25 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
668 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
278.6 KiB ../node_modules/.pnpm/posthog-js@1.399.2/node_modules/posthog-js/dist/rrweb.js
267.7 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
234.9 KiB src/taxonomy/core-filter-definitions-by-group.json
221.5 KiB ../node_modules/.pnpm/posthog-js@1.399.2/node_modules/posthog-js/dist/module.js
164.0 KiB src/queries/validators.js
154.3 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
105.9 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

⚠️ Dist folder size — 🔺 +26 B (+0.0%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1278.62 MiB · 🔺 +26 B (+0.0%)

Generated-By: PostHog Code
Task-Id: 4579c8a6-a1fb-4324-92e5-accc339909ec
@github-actions
github-actions Bot requested a deployment to preview-pr-70506 July 13, 2026 16:15 In progress
Generated-By: PostHog Code
Task-Id: 4579c8a6-a1fb-4324-92e5-accc339909ec
@trunk-io

trunk-io Bot commented Jul 13, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@Gilbert09
Gilbert09 merged commit e237229 into master Jul 14, 2026
231 checks passed
@Gilbert09
Gilbert09 deleted the tom/oauth-account-search branch July 14, 2026 10:45
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 14, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-14 11:12 UTC Run
prod-us ✅ Deployed 2026-07-14 11:23 UTC Run
prod-eu ✅ Deployed 2026-07-14 11:32 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants