Add GraphQL API and service CRUD for cookie patterns
Add CookiePattern type, connection, and mutations to the GraphQL schema with full resolver implementations. Add service methods for pattern CRUD, category movement, listing, and counting. This enables the console to manage cookie patterns instead of individual cookies. Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -156,12 +156,52 @@ type CookieCategory implements Node {
|
||||
orderBy: CookieOrder
|
||||
): CookieConnection @goField(forceResolver: true)
|
||||
|
||||
cookiePatterns(
|
||||
first: Int
|
||||
after: CursorKey
|
||||
last: Int
|
||||
before: CursorKey
|
||||
orderBy: CookiePatternOrder
|
||||
): CookiePatternConnection @goField(forceResolver: true)
|
||||
|
||||
createdAt: Datetime!
|
||||
updatedAt: Datetime!
|
||||
|
||||
permission(action: String!): Boolean! @goField(forceResolver: true)
|
||||
}
|
||||
|
||||
enum CookiePatternMatchType
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/coredata.CookiePatternMatchType"
|
||||
) {
|
||||
EXACT
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.CookiePatternMatchTypeExact"
|
||||
)
|
||||
PREFIX
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.CookiePatternMatchTypePrefix"
|
||||
)
|
||||
}
|
||||
|
||||
enum CookiePatternOrderField
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/coredata.CookiePatternOrderField"
|
||||
) {
|
||||
CREATED_AT
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.CookiePatternOrderFieldCreatedAt"
|
||||
)
|
||||
}
|
||||
|
||||
input CookiePatternOrder
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.CookiePatternOrderBy"
|
||||
) {
|
||||
direction: OrderDirection!
|
||||
field: CookiePatternOrderField!
|
||||
}
|
||||
|
||||
enum CookieOrderField
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/coredata.CookieOrderField"
|
||||
@@ -207,6 +247,36 @@ type CookieEdge {
|
||||
node: Cookie!
|
||||
}
|
||||
|
||||
type CookiePattern implements Node {
|
||||
id: ID!
|
||||
cookieCategory: CookieCategory @goField(forceResolver: true)
|
||||
pattern: String!
|
||||
matchType: CookiePatternMatchType!
|
||||
displayName: String!
|
||||
duration: String!
|
||||
description: String!
|
||||
source: CookieSource!
|
||||
cookieCount: Int! @goField(forceResolver: true)
|
||||
createdAt: Datetime!
|
||||
updatedAt: Datetime!
|
||||
|
||||
permission(action: String!): Boolean! @goField(forceResolver: true)
|
||||
}
|
||||
|
||||
type CookiePatternConnection
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.CookiePatternConnection"
|
||||
) {
|
||||
totalCount: Int! @goField(forceResolver: true)
|
||||
edges: [CookiePatternEdge!]!
|
||||
pageInfo: PageInfo!
|
||||
}
|
||||
|
||||
type CookiePatternEdge {
|
||||
cursor: CursorKey!
|
||||
node: CookiePattern!
|
||||
}
|
||||
|
||||
type CookieBannerVersion implements Node {
|
||||
id: ID!
|
||||
version: Int!
|
||||
@@ -295,6 +365,18 @@ extend type Mutation {
|
||||
createCookie(input: CreateCookieInput!): CreateCookiePayload!
|
||||
updateCookie(input: UpdateCookieInput!): UpdateCookiePayload!
|
||||
deleteCookie(input: DeleteCookieInput!): DeleteCookiePayload!
|
||||
createCookiePattern(
|
||||
input: CreateCookiePatternInput!
|
||||
): CreateCookiePatternPayload!
|
||||
updateCookiePattern(
|
||||
input: UpdateCookiePatternInput!
|
||||
): UpdateCookiePatternPayload!
|
||||
deleteCookiePattern(
|
||||
input: DeleteCookiePatternInput!
|
||||
): DeleteCookiePatternPayload!
|
||||
moveCookiePatternToCategory(
|
||||
input: MoveCookiePatternToCategoryInput!
|
||||
): MoveCookiePatternToCategoryPayload!
|
||||
upsertCookieBannerTranslation(
|
||||
input: UpsertCookieBannerTranslationInput!
|
||||
): UpsertCookieBannerTranslationPayload!
|
||||
@@ -449,6 +531,51 @@ type DeleteCookiePayload {
|
||||
cookieBanner: CookieBanner!
|
||||
}
|
||||
|
||||
input CreateCookiePatternInput {
|
||||
cookieCategoryId: ID!
|
||||
pattern: String!
|
||||
matchType: CookiePatternMatchType!
|
||||
displayName: String!
|
||||
duration: String!
|
||||
description: String!
|
||||
}
|
||||
|
||||
input UpdateCookiePatternInput {
|
||||
cookiePatternId: ID!
|
||||
displayName: String
|
||||
duration: String
|
||||
description: String
|
||||
}
|
||||
|
||||
input DeleteCookiePatternInput {
|
||||
cookiePatternId: ID!
|
||||
}
|
||||
|
||||
input MoveCookiePatternToCategoryInput {
|
||||
cookiePatternId: ID!
|
||||
targetCookieCategoryId: ID!
|
||||
}
|
||||
|
||||
type CreateCookiePatternPayload {
|
||||
cookiePatternEdge: CookiePatternEdge!
|
||||
cookieBanner: CookieBanner!
|
||||
}
|
||||
|
||||
type UpdateCookiePatternPayload {
|
||||
cookiePattern: CookiePattern!
|
||||
cookieBanner: CookieBanner!
|
||||
}
|
||||
|
||||
type DeleteCookiePatternPayload {
|
||||
deletedCookiePatternId: ID!
|
||||
cookieBanner: CookieBanner!
|
||||
}
|
||||
|
||||
type MoveCookiePatternToCategoryPayload {
|
||||
cookiePattern: CookiePattern!
|
||||
cookieBanner: CookieBanner!
|
||||
}
|
||||
|
||||
input UpsertCookieBannerTranslationInput {
|
||||
cookieBannerId: ID!
|
||||
language: String!
|
||||
|
||||
Reference in New Issue
Block a user