From a6edc23baf2de137bb500171fd960e5c39c6e131 Mon Sep 17 00:00:00 2001 From: jdolle <1841898+jdolle@users.noreply.github.com> Date: Thu, 22 May 2025 10:19:39 -0700 Subject: [PATCH 1/3] Add search to schema check route --- .changeset/healthy-parrots-move.md | 5 ++ .../api/src/modules/schema/module.graphql.ts | 1 + packages/services/storage/src/index.ts | 18 +++++- packages/web/app/src/components/v2/input.tsx | 14 +++-- packages/web/app/src/pages/target-checks.tsx | 56 ++++++++++++++++++- packages/web/app/src/router.tsx | 11 ++-- pnpm-lock.yaml | 20 +++---- 7 files changed, 101 insertions(+), 24 deletions(-) create mode 100644 .changeset/healthy-parrots-move.md diff --git a/.changeset/healthy-parrots-move.md b/.changeset/healthy-parrots-move.md new file mode 100644 index 0000000000..4a00ef8a61 --- /dev/null +++ b/.changeset/healthy-parrots-move.md @@ -0,0 +1,5 @@ +--- +'hive': minor +--- + +Add search to schema check route diff --git a/packages/services/api/src/modules/schema/module.graphql.ts b/packages/services/api/src/modules/schema/module.graphql.ts index 0f5ea13860..bb0c60f2e0 100644 --- a/packages/services/api/src/modules/schema/module.graphql.ts +++ b/packages/services/api/src/modules/schema/module.graphql.ts @@ -212,6 +212,7 @@ export default gql` input SchemaChecksFilter { failed: Boolean changed: Boolean + text: String } type SchemaConnection { diff --git a/packages/services/storage/src/index.ts b/packages/services/storage/src/index.ts index 3e1ca34295..a316a7cbfc 100644 --- a/packages/services/storage/src/index.ts +++ b/packages/services/storage/src/index.ts @@ -4159,12 +4159,16 @@ export async function createStorage( const limit = args.first ? (args.first > 0 ? Math.min(args.first, 20) : 20) : 20; - const { failed, changed } = args.filters ?? {}; + let { failed, changed, text } = args.filters ?? {}; if (args.cursor) { cursor = decodeCreatedAtAndUUIDIdBasedCursor(args.cursor); } + if (text) { + text = text.split('.').join(' '); + } + const result = await pool.any(sql`/* getPaginatedSchemaChecksForTarget */ SELECT ${schemaCheckSQLFields} @@ -4208,6 +4212,18 @@ export async function createStorage( ` : sql`` } + ${ + text + ? sql` + AND ( + service_name = ${text} + OR safe_schema_changes::text LIKE ${'%' + text + '%'} + OR breaking_schema_changes::text LIKE ${'%' + text + '%'} + OR meta::text LIKE ${'%' + text + '%'} + ) + ` + : sql`` + } ORDER BY c."target_id" ASC , c."created_at" DESC diff --git a/packages/web/app/src/components/v2/input.tsx b/packages/web/app/src/components/v2/input.tsx index 9c0ba09ece..0923f49685 100644 --- a/packages/web/app/src/components/v2/input.tsx +++ b/packages/web/app/src/components/v2/input.tsx @@ -33,11 +33,6 @@ export const Input = forwardRef< className={clsx( 'relative flex items-center gap-4 rounded-sm border border-gray-700 bg-gray-800 text-sm font-medium focus-within:ring', isInvalid ? 'text-red-500 caret-white ring-red-500' : 'text-white', - { - large: 'h-[50px] px-4 py-[18px]', - medium: 'px-4 py-2.5', - small: 'px-3 py-[5px]', - }[size], onClear && 'pr-1', className, )} @@ -45,7 +40,14 @@ export const Input = forwardRef< {prefix} >( + node => { + void navigate({ + search: { + ...search, + filter_text: node.target.value || undefined, + }, + }); + }, + 400, + { maxWait: 5000 }, + ); + return ( <>
@@ -326,6 +348,34 @@ function ChecksPageContent(props: { id="filter-toggle-status-failed" />
+
+ +
+ {hasFilteredSchemaChecks ? (
diff --git a/packages/web/app/src/router.tsx b/packages/web/app/src/router.tsx index cd018fb864..ad6a0058cf 100644 --- a/packages/web/app/src/router.tsx +++ b/packages/web/app/src/router.tsx @@ -784,10 +784,13 @@ const targetExplorerUnusedRoute = createRoute({ const targetChecksRoute = createRoute({ validateSearch: zodValidator( - z.object({ - filter_changed: z.boolean().default(false), - filter_failed: z.boolean().default(false), - }), + z + .object({ + filter_changed: z.boolean().default(false), + filter_failed: z.boolean().default(false), + filter_text: z.string().nullish(), + }) + .nullish(), ), getParentRoute: () => targetRoute, path: 'checks', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ae26c83ae..9d79a6f7b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16517,8 +16517,8 @@ snapshots: dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.596.0 - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sso-oidc': 3.596.0(@aws-sdk/client-sts@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/core': 3.592.0 '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -16625,11 +16625,11 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.596.0': + '@aws-sdk/client-sso-oidc@3.596.0(@aws-sdk/client-sts@3.596.0)': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/core': 3.592.0 '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -16668,6 +16668,7 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 transitivePeerDependencies: + - '@aws-sdk/client-sts' - aws-crt '@aws-sdk/client-sso-oidc@3.723.0(@aws-sdk/client-sts@3.723.0)': @@ -16801,11 +16802,11 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)': + '@aws-sdk/client-sts@3.596.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.596.0 + '@aws-sdk/client-sso-oidc': 3.596.0(@aws-sdk/client-sts@3.596.0) '@aws-sdk/core': 3.592.0 '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -16844,7 +16845,6 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - aws-crt '@aws-sdk/client-sts@3.723.0': @@ -16958,7 +16958,7 @@ snapshots: '@aws-sdk/credential-provider-ini@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0)': dependencies: - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/credential-provider-env': 3.587.0 '@aws-sdk/credential-provider-http': 3.596.0 '@aws-sdk/credential-provider-process': 3.587.0 @@ -17077,7 +17077,7 @@ snapshots: '@aws-sdk/credential-provider-web-identity@3.587.0(@aws-sdk/client-sts@3.596.0)': dependencies: - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/types': 3.577.0 '@smithy/property-provider': 3.1.11 '@smithy/types': 3.7.2 @@ -17252,7 +17252,7 @@ snapshots: '@aws-sdk/token-providers@3.587.0(@aws-sdk/client-sso-oidc@3.596.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.596.0 + '@aws-sdk/client-sso-oidc': 3.596.0(@aws-sdk/client-sts@3.596.0) '@aws-sdk/types': 3.577.0 '@smithy/property-provider': 3.1.11 '@smithy/shared-ini-file-loader': 3.1.12 From 0eff524ee82cbb0f347036885d2d47c77b330c81 Mon Sep 17 00:00:00 2001 From: jdolle <1841898+jdolle@users.noreply.github.com> Date: Thu, 22 May 2025 10:22:52 -0700 Subject: [PATCH 2/3] Remove split logic --- packages/services/storage/src/index.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/services/storage/src/index.ts b/packages/services/storage/src/index.ts index a316a7cbfc..e9443b65e3 100644 --- a/packages/services/storage/src/index.ts +++ b/packages/services/storage/src/index.ts @@ -4165,10 +4165,6 @@ export async function createStorage( cursor = decodeCreatedAtAndUUIDIdBasedCursor(args.cursor); } - if (text) { - text = text.split('.').join(' '); - } - const result = await pool.any(sql`/* getPaginatedSchemaChecksForTarget */ SELECT ${schemaCheckSQLFields} From f56abac751d507e1ed0f09ca5f771d25c67d985c Mon Sep 17 00:00:00 2001 From: jdolle <1841898+jdolle@users.noreply.github.com> Date: Thu, 22 May 2025 10:23:19 -0700 Subject: [PATCH 3/3] Const --- packages/services/storage/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/services/storage/src/index.ts b/packages/services/storage/src/index.ts index e9443b65e3..a091b36ab8 100644 --- a/packages/services/storage/src/index.ts +++ b/packages/services/storage/src/index.ts @@ -4159,7 +4159,7 @@ export async function createStorage( const limit = args.first ? (args.first > 0 ? Math.min(args.first, 20) : 20) : 20; - let { failed, changed, text } = args.filters ?? {}; + const { failed, changed, text } = args.filters ?? {}; if (args.cursor) { cursor = decodeCreatedAtAndUUIDIdBasedCursor(args.cursor);