diff --git a/packages/contracts/scripts/generate-meta.ts b/packages/contracts/scripts/generate-meta.ts index 794ce56..873a02f 100644 --- a/packages/contracts/scripts/generate-meta.ts +++ b/packages/contracts/scripts/generate-meta.ts @@ -35,6 +35,7 @@ type Kind = | 'float' | 'boolean' | 'uuid' + | 'objectId' | 'dateTime' | 'dateOnly' | 'enum'; @@ -56,6 +57,10 @@ const COMPARABLE_OPS = [ const ENUM_OPS = ['eq', 'neq', 'in', 'nin'] as const satisfies readonly FilterOperator[]; +// String ids stored as a MongoDB `ObjectId` only support the equality family — an +// `ObjectId` `_id` cannot be matched with an Atlas Search wildcard/regex clause. +const OBJECT_ID_OPS = ['eq', 'neq', 'in', 'nin'] as const satisfies readonly FilterOperator[]; + const STRING_OPS = [ 'eq', 'neq', @@ -95,6 +100,7 @@ const FILTER_OPERATORS_BY_KIND = { float: COMPARABLE_OPS, boolean: BOOLEAN_OPS, uuid: COMPARABLE_OPS, + objectId: OBJECT_ID_OPS, dateTime: COMPARABLE_OPS, dateOnly: COMPARABLE_OPS, enum: ENUM_OPS, @@ -132,6 +138,7 @@ const OPERATOR_TYPE_TO_KIND: Readonly> = { FloatOperationFilterInput: 'float', BooleanOperationFilterInput: 'boolean', UuidOperationFilterInput: 'uuid', + ObjectIdOperationFilterInput: 'objectId', DateTimeOperationFilterInput: 'dateTime', LocalDateOperationFilterInput: 'dateOnly', EnumOperationFilterInput: 'enum', diff --git a/packages/contracts/src/graphql/cases.ts b/packages/contracts/src/graphql/cases.ts index e393533..7d4bd7e 100644 --- a/packages/contracts/src/graphql/cases.ts +++ b/packages/contracts/src/graphql/cases.ts @@ -11,6 +11,7 @@ import type { PickFields, GetQueryOptions, StringOperationFilterInput, + ObjectIdOperationFilterInput, IntOperationFilterInput, UuidOperationFilterInput, DateTimeOperationFilterInput, @@ -148,7 +149,7 @@ export interface QueryCaseModel { export interface QueryCaseModelFilterInput { and?: QueryCaseModelFilterInput[] | null; or?: QueryCaseModelFilterInput[] | null; - id?: StringOperationFilterInput | null; + id?: ObjectIdOperationFilterInput | null; ref?: StringOperationFilterInput | null; type?: EnumOperationFilterInput | null; status?: EnumOperationFilterInput | null; diff --git a/packages/contracts/src/graphql/common.ts b/packages/contracts/src/graphql/common.ts index 62657cf..53fef16 100644 --- a/packages/contracts/src/graphql/common.ts +++ b/packages/contracts/src/graphql/common.ts @@ -264,6 +264,21 @@ export interface UuidOperationFilterInput { nlte?: string | null; } +/** + * Filter input for string ids stored as a MongoDB `ObjectId` on the server + * (e.g. proposal/policy/case/webhook-delivery `id`, webhook-delivery `webhookId`). + * Only the equality family is exposed: an `ObjectId` `_id` cannot be matched with an + * Atlas Search wildcard/regex clause, so substring operators (`contains`/`startsWith`/ + * `endsWith` and negations) are rejected by the server schema as validation errors. + * Mirrors `filtering_ObjectIdOperationFilterInput`. + */ +export interface ObjectIdOperationFilterInput { + eq?: string | null; + neq?: string | null; + in?: (string | null)[] | null; + nin?: (string | null)[] | null; +} + // === Search Operation Inputs === /** diff --git a/packages/contracts/src/graphql/filePolicyTransfers.ts b/packages/contracts/src/graphql/filePolicyTransfers.ts index 86926a7..daaf79b 100644 --- a/packages/contracts/src/graphql/filePolicyTransfers.ts +++ b/packages/contracts/src/graphql/filePolicyTransfers.ts @@ -11,6 +11,7 @@ import type { PickFields, GetQueryOptions, StringOperationFilterInput, + ObjectIdOperationFilterInput, IntOperationFilterInput, DateTimeOperationFilterInput, EnumOperationFilterInput, @@ -53,7 +54,7 @@ export interface QueryFilePolicyTransfersResult { export interface QueryFilePolicyTransfersResultFilterInput { and?: QueryFilePolicyTransfersResultFilterInput[] | null; or?: QueryFilePolicyTransfersResultFilterInput[] | null; - id?: StringOperationFilterInput | null; + id?: ObjectIdOperationFilterInput | null; createdAt?: DateTimeOperationFilterInput | null; sourceType?: EnumOperationFilterInput | null; insuranceCompanyName?: StringOperationFilterInput | null; diff --git a/packages/contracts/src/graphql/policies.ts b/packages/contracts/src/graphql/policies.ts index 0a8a62f..c1c1a71 100644 --- a/packages/contracts/src/graphql/policies.ts +++ b/packages/contracts/src/graphql/policies.ts @@ -11,6 +11,7 @@ import type { PickFields, GetQueryOptions, StringOperationFilterInput, + ObjectIdOperationFilterInput, IntOperationFilterInput, FloatOperationFilterInput, BooleanOperationFilterInput, @@ -147,7 +148,7 @@ export enum PolicyVersionType { export interface QueryPoliciesResultFilterInput { and?: QueryPoliciesResultFilterInput[] | null; or?: QueryPoliciesResultFilterInput[] | null; - id?: StringOperationFilterInput | null; + id?: ObjectIdOperationFilterInput | null; insurerCustomerId?: UuidOperationFilterInput | null; insuredCustomerId?: UuidOperationFilterInput | null; installmentNumber?: IntOperationFilterInput | null; diff --git a/packages/contracts/src/graphql/policyTransfers.ts b/packages/contracts/src/graphql/policyTransfers.ts index 06555da..334aea1 100644 --- a/packages/contracts/src/graphql/policyTransfers.ts +++ b/packages/contracts/src/graphql/policyTransfers.ts @@ -10,7 +10,7 @@ import type { DeepFieldKeys, PickFields, GetQueryOptions, - StringOperationFilterInput, + ObjectIdOperationFilterInput, IntOperationFilterInput, DateTimeOperationFilterInput, LocalDateOperationFilterInput, @@ -42,7 +42,7 @@ export interface QueryPolicyTransfersResult { export interface QueryPolicyTransfersResultFilterInput { and?: QueryPolicyTransfersResultFilterInput[] | null; or?: QueryPolicyTransfersResultFilterInput[] | null; - id?: StringOperationFilterInput | null; + id?: ObjectIdOperationFilterInput | null; startDate?: LocalDateOperationFilterInput | null; endDate?: LocalDateOperationFilterInput | null; createdAt?: DateTimeOperationFilterInput | null; diff --git a/packages/contracts/src/graphql/proposals.ts b/packages/contracts/src/graphql/proposals.ts index 8e554ee..87da28a 100644 --- a/packages/contracts/src/graphql/proposals.ts +++ b/packages/contracts/src/graphql/proposals.ts @@ -11,6 +11,7 @@ import type { PickFields, GetQueryOptions, StringOperationFilterInput, + ObjectIdOperationFilterInput, IntOperationFilterInput, FloatOperationFilterInput, UuidOperationFilterInput, @@ -94,7 +95,7 @@ export interface QueryProposalsResult { export interface QueryProposalsResultFilterInput { and?: QueryProposalsResultFilterInput[] | null; or?: QueryProposalsResultFilterInput[] | null; - id?: StringOperationFilterInput | null; + id?: ObjectIdOperationFilterInput | null; productBranch?: EnumOperationFilterInput | null; state?: EnumOperationFilterInput | null; insurerCustomerId?: UuidOperationFilterInput | null; diff --git a/packages/contracts/src/graphql/webhookDeliveries.ts b/packages/contracts/src/graphql/webhookDeliveries.ts index 90bca8f..ef8f9fe 100644 --- a/packages/contracts/src/graphql/webhookDeliveries.ts +++ b/packages/contracts/src/graphql/webhookDeliveries.ts @@ -11,6 +11,7 @@ import type { PickFields, GetQueryOptions, StringOperationFilterInput, + ObjectIdOperationFilterInput, IntOperationFilterInput, BooleanOperationFilterInput, DateTimeOperationFilterInput, @@ -44,8 +45,8 @@ export interface QueryWebhookDeliveryResult { export interface QueryWebhookDeliveryResultFilterInput { and?: QueryWebhookDeliveryResultFilterInput[] | null; or?: QueryWebhookDeliveryResultFilterInput[] | null; - id?: StringOperationFilterInput | null; - webhookId?: StringOperationFilterInput | null; + id?: ObjectIdOperationFilterInput | null; + webhookId?: ObjectIdOperationFilterInput | null; event?: EnumOperationFilterInput | null; sentAt?: DateTimeOperationFilterInput | null; statusCode?: IntOperationFilterInput | null; diff --git a/packages/contracts/src/webhooks.ts b/packages/contracts/src/webhooks.ts index e9f994c..5469a53 100644 --- a/packages/contracts/src/webhooks.ts +++ b/packages/contracts/src/webhooks.ts @@ -11,126 +11,126 @@ export enum WebhookEvent { * * Teklif prim hesaplaması alındığında ve başarıyla işlendiğinde tetiklenir. */ - ProposalPremiumReceived = 'PROPOSAL_PREMIUM_RECEIVED', + ProposalPremiumReceived = 'proposal_premium.received', /** * Triggered when a proposal premium purchase process is initiated. * * Teklif prim satın alma süreci başlatıldığında tetiklenir. */ - ProposalPremiumPurchasing = 'PROPOSAL_PREMIUM_PURCHASING', + ProposalPremiumPurchasing = 'proposal_premium.purchasing', /** * Triggered when a proposal premium purchase process is completed successfully. * * Teklif prim satın alma süreci başarıyla tamamlandığında tetiklenir. */ - ProposalPremiumPurchased = 'PROPOSAL_PREMIUM_PURCHASED', + ProposalPremiumPurchased = 'proposal_premium.purchased', /** * Triggered when a proposal premium purchase process fails. * * Teklif prim satın alma süreci başarısız olduğunda tetiklenir. */ - ProposalPremiumPurchaseFailed = 'PROPOSAL_PREMIUM_PURCHASE_FAILED', + ProposalPremiumPurchaseFailed = 'proposal_premium.purchase_failed', /** * Triggered when an insurance policy is created in the system. * * Sistemde bir sigorta poliçesi oluşturulduğunda tetiklenir. */ - PolicyCreated = 'POLICY_CREATED', + PolicyCreated = 'policy.created', /** * Triggered when an existing insurance policy is updated or modified. * * Mevcut bir sigorta poliçesi güncellendiğinde veya değiştirildiğinde tetiklenir. */ - PolicyUpdated = 'POLICY_UPDATED', + PolicyUpdated = 'policy.updated', /** * Triggered when a new customer is created. * * Yeni bir müşteri oluşturulduğunda tetiklenir. */ - CustomerCreated = 'CUSTOMER_CREATED', + CustomerCreated = 'customer.created', /** * Triggered when an existing customer is updated. * * Mevcut bir müşteri güncellendiğinde tetiklenir. */ - CustomerUpdated = 'CUSTOMER_UPDATED', + CustomerUpdated = 'customer.updated', /** * Triggered when a customer grants KVKK (personal data protection) consent. * * Müşteri KVKK (kişisel verilerin korunması) izni verdiğinde tetiklenir. */ - CustomerKvkkConsentGiven = 'CUSTOMER_KVKK_CONSENT_GIVEN', + CustomerKvkkConsentGiven = 'customer.kvkk_consent_given', /** * Triggered when a customer revokes KVKK consent. * * Müşteri KVKK iznini geri aldığında tetiklenir. */ - CustomerKvkkConsentRevoked = 'CUSTOMER_KVKK_CONSENT_REVOKED', + CustomerKvkkConsentRevoked = 'customer.kvkk_consent_revoked', /** * Triggered when a customer grants ETK (commercial electronic message) consent. * * Müşteri ETK (ticari elektronik ileti) izni verdiğinde tetiklenir. */ - CustomerEtkConsentGiven = 'CUSTOMER_ETK_CONSENT_GIVEN', + CustomerEtkConsentGiven = 'customer.etk_consent_given', /** * Triggered when a customer revokes ETK consent. * * Müşteri ETK iznini geri aldığında tetiklenir. */ - CustomerEtkConsentRevoked = 'CUSTOMER_ETK_CONSENT_REVOKED', + CustomerEtkConsentRevoked = 'customer.etk_consent_revoked', /** * Triggered when a new vehicle is created for a customer. * * Bir müşteri için yeni bir araç oluşturulduğunda tetiklenir. */ - VehicleCreated = 'VEHICLE_CREATED', + VehicleCreated = 'vehicle.created', /** * Triggered when an existing vehicle is updated. * * Mevcut bir araç güncellendiğinde tetiklenir. */ - VehicleUpdated = 'VEHICLE_UPDATED', + VehicleUpdated = 'vehicle.updated', /** * Triggered when a new property is created for a customer. * * Bir müşteri için yeni bir gayrimenkul oluşturulduğunda tetiklenir. */ - PropertyCreated = 'PROPERTY_CREATED', + PropertyCreated = 'property.created', /** * Triggered when an existing property is updated. * * Mevcut bir gayrimenkul güncellendiğinde tetiklenir. */ - PropertyUpdated = 'PROPERTY_UPDATED', + PropertyUpdated = 'property.updated', /** * Triggered when a new case is created. * * Yeni bir talep oluşturulduğunda tetiklenir. */ - CaseCreated = 'CASE_CREATED', + CaseCreated = 'case.created', /** * Triggered when a case's state (main or sub) changes. * * Bir talebin durumu (ana veya alt) değiştiğinde tetiklenir. */ - CaseStateChanged = 'CASE_STATE_CHANGED', + CaseStateChanged = 'case.state_changed', } // Webhook Contracts