Add uncategorised patterns GraphQL endpoint

Backend for the cookie banner detection page: a new
uncategorisedPatterns connection on CookieBanner with
sortable (NAME, LAST_MATCHED_AT, UPDATED_AT, SOURCE)
and filterable (text ILIKE on name/description, source
enum) paginated results. COALESCE handles NULL-first
ordering for last_matched_at.

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-05-04 18:30:47 +04:00
parent 54655c218b
commit bb442bb86d
7 changed files with 324 additions and 8 deletions

View File

@@ -123,6 +123,15 @@ type CookieBanner implements Node {
filter: CookieConsentRecordFilter
): CookieConsentRecordConnection @goField(forceResolver: true)
uncategorisedPatterns(
first: Int
after: CursorKey
last: Int
before: CursorKey
orderBy: CookiePatternOrder
filter: CookiePatternFilter
): CookiePatternConnection @goField(forceResolver: true)
createdAt: Datetime!
updatedAt: Datetime!
@@ -184,6 +193,22 @@ enum CookiePatternOrderField
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.CookiePatternOrderFieldCreatedAt"
)
NAME
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.CookiePatternOrderFieldName"
)
LAST_MATCHED_AT
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.CookiePatternOrderFieldLastMatchedAt"
)
UPDATED_AT
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.CookiePatternOrderFieldUpdatedAt"
)
SOURCE
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.CookiePatternOrderFieldSource"
)
}
input CookiePatternOrder
@@ -194,6 +219,11 @@ input CookiePatternOrder
field: CookiePatternOrderField!
}
input CookiePatternFilter {
query: String
source: CookieSource
}
type CookiePattern implements Node {
id: ID!
cookieCategory: CookieCategory @goField(forceResolver: true)