Skip to content

Conversation

@mikeallisonJS
Copy link
Collaborator

@mikeallisonJS mikeallisonJS commented Nov 12, 2025

Summary by CodeRabbit

  • New Features

    • Google integration: create/update flows, picker token retrieval, and Google Sheets sync; IntegrationGoogle exposed in APIs and UI; VideoBlock gains showGeneratedSubtitles.
  • Configuration

    • Runtime environment validation for Google and encryption settings; SKIP_ENV_VALIDATION override supported; test env mock added.
  • Database

    • Schema updated to add Google integration type, user/account fields, and GoogleSheetsSync table.
  • Tests

    • New coverage for Google OAuth create/update/token retrieval and deletion/authorization paths.

mikeallisonJS and others added 20 commits November 6, 2025 00:46
- Introduced new GraphQL types and mutations for Google Sheets integration, including `GoogleSheetsSync`, `googleSheetsSyncCreate`, and `googleSheetsSyncDelete`.
- Added input types for creating and filtering Google Sheets syncs.
- Implemented resolver logic for handling Google Sheets sync operations.
- Updated existing schemas to accommodate new integration types and fields.
- Enhanced journey visitor export functionality to support Google Sheets integration.

This update enables users to create and manage Google Sheets syncs directly from the application, enhancing data management capabilities.
- Added new utility functions for validating blocks and managing event contexts, including `validateBlockEvent`, `getByUserIdAndJourneyId`, and `getOrCreateVisitor`.
- Improved `appendEventToGoogleSheets` to handle dynamic keys and update existing rows based on visitor presence.
- Updated tests to cover new functionalities and ensure robust integration with Google Sheets.
- Refactored existing code for better clarity and maintainability, including adjustments to header management in Google Sheets.
- Enhanced email job handling in `sendEventsEmail` and `resetEventsEmailDelay` functions to improve queue management.

This update significantly improves the event handling capabilities and integration with Google Sheets, providing a more seamless user experience.
- Removed unnecessary fields `accessId` and `accessSecretPart` from `IntegrationGoogle` and `IntegrationGrowthSpaces` types across multiple schemas.
- Updated input types and resolvers to ensure consistency in handling IDs and required fields for Google Sheets sync operations.
- Enhanced error handling and validation for Google Sheets export functionality, ensuring required fields are checked based on the export mode.
- Improved type definitions for better clarity and maintainability in the integration logic.

This refactor streamlines the integration process and enhances the overall robustness of the Google Sheets functionality.
…oogle integration

- Added `@t3-oss/env-core` dependency to `package.json` and updated `pnpm-lock.yaml`.
- Modified GraphQL schema to change the `integrationGooglePickerToken` query and `integrationGoogleCreate` mutation to ensure proper authentication and integration ownership checks.
- Enhanced error handling and validation in Google Sheets sync operations, ensuring required fields are checked based on the integration context.
- Updated TypeScript configurations for better module resolution and strict type checking.

These changes improve the integration process and enhance the overall robustness of the Google Sheets functionality.
- Updated GraphQL types to use consistent ID types for integration and journey identifiers.
- Introduced new input types for generating subtitles and improved handling of video block properties.
- Enhanced integration query logic to ensure proper type checks and validation for GrowthSpaces integrations.
- Added support for showing generated subtitles in video blocks across various components.

These changes improve the robustness and clarity of the integration process, particularly for GrowthSpaces and video handling.
…paces

- Updated type imports to enhance clarity and consistency in the integration logic.
- Introduced a type guard function to filter GrowthSpaces integrations more effectively.
- Refactored the options generation to ensure proper handling of integration data, improving robustness and maintainability.

These changes streamline the integration process and enhance type safety within the application.
- Modified the integration resolver test to include the team data in the query, ensuring that the integration logic correctly fetches associated team information.
- Updated Jest configuration to include a new module mapping for environment variables, enhancing test setup.
- Adjusted TypeScript configurations across multiple files to ensure consistent module resolution and JSX handling.

These changes improve the accuracy of integration tests and enhance the overall testing environment.
- Updated tests for Google authentication and integration to include additional checks for access tokens and error scenarios.
- Improved assertions in the tests to ensure proper handling of integration ownership and authorization.
- Refactored test cases to streamline the setup and enhance clarity, particularly in the context of Google Sheets sync operations.

These changes strengthen the reliability of the Google integration tests and improve error handling across the application.
…es integration

- Introduced a type guard function to check for TextResponse blocks, enhancing type safety and clarity in the integration logic.
- Updated the handling of integration and route IDs to use the new type guard, ensuring proper values are used during state updates.
- Refactored the rendering logic to conditionally display options based on the block type, improving the user experience and reducing potential errors.

These changes enhance the robustness of the GrowthSpaces integration and streamline the handling of TextResponse blocks.
…onent

- Improved readability by restructuring conditional checks for TextResponse blocks and integration IDs.
- Enhanced the formatting of JSX elements for better clarity and maintainability.
- Ensured consistent handling of route IDs within the rendering logic, contributing to a smoother user experience.

These changes streamline the Route component's code and enhance overall clarity.
- Removed skipped tests for GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET configuration checks in Google integration tests to streamline the test suite.
- Cleaned up the environment mock file by removing unnecessary blank lines.
- Updated ESLint configuration to simplify ignored file paths, enhancing maintainability.

These changes improve the clarity and efficiency of the testing framework for Google integrations.
- Adjusted ESLint ignore paths to be more specific, improving maintainability.
- Added 'postcss.config.mjs' to the TypeScript include paths for better integration with ESLint.
- Updated rules to reflect the new directory structure, enhancing clarity in linting processes.

These changes streamline the configuration setup for the journeys-admin application, ensuring better alignment with project structure.
…on logic

- Updated the Google integration mutation to require a refresh token, ensuring proper error handling when it is not provided.
- Improved error logging and messaging for better user guidance during the authorization process.
- Refactored the integration delete mutation to include query context in the deletion process, enhancing its functionality.

These changes strengthen the reliability of the Google integration and improve the overall error handling in the application.
…k handling

- Introduced a new MuxVideoUploadProvider to manage video upload tasks and their states.
- Added utilities for handling upload tasks, including cancellation and polling for upload status.
- Updated video block components to integrate with the new upload provider, ensuring seamless video management.
- Enhanced GraphQL types and queries to support video block operations, including fetching and updating video details.

These changes significantly improve the video upload experience and provide better integration with Mux services.
- Updated the GraphQL schema to improve the handling of Google Sheets integration, including optional folder ID for spreadsheet creation.
- Introduced new types and mutations for Google Sheets synchronization, allowing for better management of spreadsheet exports.
- Enhanced error handling in the journey visitor export functionality to accommodate missing folder IDs.
- Refactored related tests to ensure accurate behavior when folder IDs are omitted during spreadsheet creation.

These changes significantly improve the flexibility and usability of the Google Sheets integration within the application.
- Refactored event utility functions to simplify the handling of block validation and email queue management.
- Removed Google Sheets integration from event creation mutations, enhancing performance and reducing complexity.
- Updated tests to reflect changes in the event handling logic and ensure accurate functionality.
- Improved error handling and environment management within the event utilities.

These changes enhance the clarity and maintainability of the event handling processes in the application.
…lated functionality

- Eliminated Google Sheets synchronization types, inputs, and mutations from the GraphQL schema, simplifying the overall structure.
- Removed associated utility functions and tests related to Google Sheets, enhancing maintainability and reducing complexity.
- Updated event handling logic to remove dependencies on Google Sheets integration, streamlining the event processing flow.

These changes significantly declutter the codebase and improve the clarity of the event handling processes.
@mikeallisonJS mikeallisonJS self-assigned this Nov 12, 2025
@linear
Copy link

linear bot commented Nov 12, 2025

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 12, 2025

Walkthrough

Adds a Google integration end-to-end: GraphQL types/inputs/mutations/queries and resolvers; Google OAuth helpers and tests; symmetric encryption of refresh tokens; DB migration adding google enum, userId/accountEmail, and GoogleSheetsSync table; extracts auth scopes/Context; adds env validation and related test mocks; updates TypeScript/Jest/CI settings.

Changes

Cohort / File(s) Summary
Gateway & Public Schemas
apis/api-gateway/schema.graphql, apis/api-journeys/schema.graphql, apis/api-journeys/src/app/modules/integration/.../*.graphql
Add IntegrationGoogle type and google enum value; add showGeneratedSubtitles to VideoBlock; relax nullability on GrowthSpaces access fields.
API (journeys-modern) — Integration Schema & Registry
apis/api-journeys-modern/schema.graphql, apis/api-journeys-modern/src/schema/integration/*, .../integration/index.ts, .../integration/integration.ts
Introduce IntegrationGoogle and IntegrationGrowthSpaces variants, inputs, mutations/queries (integrationGoogleCreate, integrationGoogleUpdate, integrationDelete, integrationGooglePickerToken), resolveType wiring and re-exports.
API (journeys-modern) — Google OAuth Library & Tests
apis/api-journeys-modern/src/lib/google/googleAuth.ts, apis/api-journeys-modern/src/lib/google/googleAuth.spec.ts
New helpers getTeamGoogleAccessToken and getIntegrationGoogleAccessToken that decrypt stored secrets and perform refresh-token exchanges against Google; added unit tests covering success and failure scenarios.
API (journeys-modern) — Google Mutations/Queries & Tests
apis/api-journeys-modern/src/schema/integration/google/*.mutation.{ts,spec.ts}, .../googlePickerToken.query.{ts,spec.ts}, .../integrationDelete.mutation.{ts,spec.ts}
Implement create/update/picker-token/delete flows: OAuth exchanges, userinfo fetch, symmetric encryption, DB create/update/transactional delete, ownership checks, and tests.
API (journeys-modern) — Auth Scopes, Builder & Yoga
apis/api-journeys-modern/src/schema/authScopes.ts, .../schema/builder.ts, .../yoga.ts
Extract authScopes and Context types; add helpers isInTeam, isIntegrationOwner, isTeamManager; builder and yoga now import centralized Context/AuthScopes.
API (journeys-modern) — Env & Test Config
apis/api-journeys-modern/src/env.ts, apis/api-journeys-modern/test/env.mock.ts, apis/api-journeys-modern/jest.config.ts, .github/workflows/api-deploy-worker.yml, package.json
Add runtime env validation via @t3-oss/env-core, test env mock, jest moduleNameMapper for /env, CI flag SKIP_ENV_VALIDATION=1, and dependency @t3-oss/env-core.
Database Schema & Migration
libs/prisma/journeys/db/schema.prisma, libs/prisma/journeys/db/migrations/.../migration.sql
Add google enum value; add userId and accountEmail to Integration; new GoogleSheetsSync model with indexes and FK constraints; update Journey/Team relations and indexes.
Server (api-journeys) — Resolvers & Module
apis/api-journeys/src/app/modules/integration/google/google.resolver.ts, apis/api-journeys/src/app/modules/integration/*.ts, apis/api-journeys/src/app/modules/integration/*.graphql
Add IntegrationGoogleResolver.user resolver; register resolver in module; update __resolveType to map googleIntegrationGoogle; include team relation in integrations query.
Frontend (journeys-admin) — Type Guards & Integrations UI
apps/journeys-admin/src/components/.../GrowthSpacesIntegrations/*, .../Route.tsx, .../GrowthSpacesIntegrationDetails.tsx, .../useIntegrationQuery.spec.tsx
Add runtime type guards and null-safe handling for GrowthSpaces and TextResponse blocks; update generated type imports and selection logic.
Type/Export Updates & Test Fixtures
libs/yoga/src/firebaseClient/index.ts, libs/yoga/src/interop/index.ts, libs/nest/common/src/lib/crypto/crypto.spec.ts
Convert several re-exports to type-only exports (User, InteropContext); update test fixtures to include userId and accountEmail.
Tooling & TypeScript Configs
apis/api-journeys-modern/tsconfig.json, apis/api-journeys-modern/tsconfig.app.json, apis/api-journeys-modern/tsconfig.spec.json, apps/journeys-admin/tsconfig.eslint.json
Adjust compiler options (module/moduleResolution/jsx/outDir/strict) and include postcss.config.mjs for ESLint.
CI Workflow
.github/workflows/api-deploy-worker.yml
Add SKIP_ENV_VALIDATION: 1 env flag to build-and-deploy job and minor quoting change in image output command.

Sequence Diagram(s)

sequenceDiagram
    participant User as Frontend
    participant API as GraphQL Mutation
    participant Google as Google OAuth
    participant DB as Database
    participant Crypto as Encryption

    User->>API: integrationGoogleCreate(input: code, redirectUri, teamId)
    API->>Google: POST /token (code, client_id, client_secret)
    Google-->>API: { access_token, refresh_token }
    API->>Google: GET /userinfo (access_token)
    Google-->>API: { email }
    API->>Crypto: encryptSymmetric(refresh_token)
    Crypto-->>API: { ciphertext, iv, tag }
    API->>DB: create Integration (type: 'google', accountEmail, encrypted data)
    DB-->>API: Integration
    API-->>User: IntegrationGoogle
Loading
sequenceDiagram
    participant Client as GraphQL Query
    participant API as Resolver
    participant DB as Database
    participant AuthLib as googleAuth.getIntegrationGoogleAccessToken
    participant Google as Google OAuth

    Client->>API: integrationGooglePickerToken(integrationId)
    API->>DB: find Integration by id
    DB-->>API: Integration (with encrypted secret)
    API->>AuthLib: getIntegrationGoogleAccessToken(integrationId)
    AuthLib->>DB: fetch Integration and encrypted secret
    AuthLib->>AuthLib: decryptSymmetric(encrypted data)
    AuthLib->>Google: POST /token (refresh_token, client_id, client_secret, grant_type)
    alt Token refresh succeeds
        Google-->>AuthLib: { access_token }
    else Token refresh fails
        AuthLib-->>AuthLib: Log error with context/stack/response
        AuthLib-->>AuthLib: Throw "re-authorization required"
    end
    AuthLib-->>API: GoogleAuthResult { accessToken, accountEmail }
    API-->>Client: accessToken
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60–90 minutes

  • Areas needing focused review:
    • apis/api-journeys-modern/src/lib/google/googleAuth.ts — decryption, refresh-token exchange, error logging and timeouts.
    • apis/api-journeys-modern/src/schema/integration/google/googleCreate.mutation.ts and googleUpdate.mutation.ts — OAuth flows, validation, encryption, DB create/update semantics.
    • libs/prisma/journeys/db/schema.prisma and migration SQL — enum migration ordering, new table schema, FK ON DELETE behaviors and indexes.
    • apis/api-journeys-modern/src/schema/authScopes.ts and builder integration — authorization helpers and async scope behaviors.
    • Tests that mock axios/crypto/Firebase — ensure mocks reflect actual request/response shapes.

Possibly related PRs

Suggested reviewers

  • tanflem

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: adding Google authentication integration to the backend services, which is reflected throughout the extensive API modifications, schema updates, and new resolver implementations.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch mikeallison/nes-920-add-google-auth-integration-to-backend-no-qa

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 8198d61 and d7b61cb.

📒 Files selected for processing (1)
  • apis/api-journeys-modern/infrastructure/locals.tf (1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: mikeallisonJS
Repo: JesusFilm/core PR: 8310
File: apis/api-journeys-modern/src/schema/integration/google/googleUpdate.mutation.ts:93-102
Timestamp: 2025-11-13T20:28:24.029Z
Learning: In the Integration model for apis/api-journeys-modern, the fields `accessId` and `accessSecretPart` are specific to the GrowthSpaces integration type and are not used for Google integrations. Google integrations use encrypted OAuth credentials via `accessSecretCipherText`, `accessSecretIv`, `accessSecretTag`, and `accountEmail` fields instead.
Learnt from: mikeallisonJS
Repo: JesusFilm/core PR: 8156
File: apis/api-journeys-modern/src/lib/google/googleAuth.ts:0-0
Timestamp: 2025-11-11T23:22:02.196Z
Learning: In apis/api-journeys-modern, use the validated `env` object from `../../env` instead of accessing `process.env` directly for environment variables that are defined in env.ts (e.g., GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, INTEGRATION_ACCESS_KEY_ENCRYPTION_SECRET). This eliminates the need for runtime validation checks since Zod validates them at application startup.
📚 Learning: 2025-11-11T23:22:02.196Z
Learnt from: mikeallisonJS
Repo: JesusFilm/core PR: 8156
File: apis/api-journeys-modern/src/lib/google/googleAuth.ts:0-0
Timestamp: 2025-11-11T23:22:02.196Z
Learning: In apis/api-journeys-modern, use the validated `env` object from `../../env` instead of accessing `process.env` directly for environment variables that are defined in env.ts (e.g., GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, INTEGRATION_ACCESS_KEY_ENCRYPTION_SECRET). This eliminates the need for runtime validation checks since Zod validates them at application startup.

Applied to files:

  • apis/api-journeys-modern/infrastructure/locals.tf
📚 Learning: 2025-07-22T18:37:46.814Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: .cursor/rules/infrastructure.mdc:0-0
Timestamp: 2025-07-22T18:37:46.814Z
Learning: Applies to infrastructure/**/*.{tf,tfvars} : Avoid hardcoding sensitive values (e.g., passwords, API keys); instead, use Vault or environment variables.

Applied to files:

  • apis/api-journeys-modern/infrastructure/locals.tf
📚 Learning: 2025-11-13T20:28:24.029Z
Learnt from: mikeallisonJS
Repo: JesusFilm/core PR: 8310
File: apis/api-journeys-modern/src/schema/integration/google/googleUpdate.mutation.ts:93-102
Timestamp: 2025-11-13T20:28:24.029Z
Learning: In the Integration model for apis/api-journeys-modern, the fields `accessId` and `accessSecretPart` are specific to the GrowthSpaces integration type and are not used for Google integrations. Google integrations use encrypted OAuth credentials via `accessSecretCipherText`, `accessSecretIv`, `accessSecretTag`, and `accountEmail` fields instead.

Applied to files:

  • apis/api-journeys-modern/infrastructure/locals.tf
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: lint (22)
  • GitHub Check: affected (22)
  • GitHub Check: test (22, 2/3)
  • GitHub Check: test (22, 3/3)
  • GitHub Check: test (22, 1/3)
  • GitHub Check: build (22)
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (1)
apis/api-journeys-modern/infrastructure/locals.tf (1)

11-12: Correctly integrated environment variable declarations.

The additions are properly positioned in alphabetical order, sourced securely from Doppler (per line 51), and align with the runtime environment validation introduced in src/env.ts for Google OAuth integration. No security concerns.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 12, 2025

Warnings
⚠️ ❗ Big PR (2684 changes)

(change count - 2684): Pull Request size seems relatively large. If Pull Request contains multiple changes, split each into separate PR will helps faster, easier review.

Generated by 🚫 dangerJS against f19a19b

@nx-cloud
Copy link

nx-cloud bot commented Nov 12, 2025

View your CI Pipeline Execution ↗ for commit f19a19b

Command Status Duration Result
nx run watch-modern-e2e:e2e ✅ Succeeded 5s View ↗
nx run journeys-e2e:e2e ✅ Succeeded 21s View ↗
nx run videos-admin-e2e:e2e ✅ Succeeded 7s View ↗
nx run short-links-e2e:e2e ✅ Succeeded 6s View ↗
nx run journeys-admin-e2e:e2e ✅ Succeeded 59s View ↗
nx run watch-e2e:e2e ✅ Succeeded 13s View ↗
nx run docs-e2e:e2e ✅ Succeeded 3s View ↗
nx run-many --target=vercel-alias --projects=jo... ✅ Succeeded 2s View ↗
Additional runs (20) ✅ Succeeded ... View ↗

☁️ Nx Cloud last updated this comment at 2025-11-17 20:25:52 UTC

@nx-cloud
Copy link

nx-cloud bot commented Nov 12, 2025

View your CI Pipeline Execution ↗ for commit b219ef6

Command Status Duration Result
nx run docs-e2e:e2e ✅ Succeeded 4s View ↗
nx run watch-modern-e2e:e2e ✅ Succeeded 3s View ↗
nx run videos-admin-e2e:e2e ✅ Succeeded 4s View ↗
nx run-many --target=vercel-alias --projects=jo... ✅ Succeeded 2s View ↗
nx run-many --target=upload-sourcemaps --projec... ✅ Succeeded 12s View ↗
nx run-many --target=deploy --projects=journeys... ✅ Succeeded 2m 40s View ↗
nx run-many --target=vercel-alias --projects=jo... ✅ Succeeded 2s View ↗
nx run-many --target=upload-sourcemaps --projec... ✅ Succeeded 7s View ↗
Additional runs (16) ✅ Succeeded ... View ↗

☁️ Nx Cloud last updated this comment at 2025-11-12 23:32:52 UTC

@github-actions github-actions bot requested a deployment to Preview - videos-admin November 12, 2025 23:20 Pending
@github-actions github-actions bot requested a deployment to Preview - journeys-admin November 12, 2025 23:20 Pending
@github-actions github-actions bot temporarily deployed to Preview - journeys November 14, 2025 18:07 Inactive
@github-actions github-actions bot temporarily deployed to Preview - watch-modern November 14, 2025 18:07 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys-admin November 14, 2025 18:07 Inactive
@github-actions github-actions bot temporarily deployed to Preview - videos-admin November 14, 2025 18:07 Inactive
@github-actions github-actions bot temporarily deployed to Preview - short-links November 14, 2025 18:07 Inactive
@jesus-film-bot
Copy link

Ran Plan for dir: infrastructure workspace: default

Show Output
Note: Objects have changed outside of Terraform

Terraform detected the following changes made outside of Terraform since the
last "terraform apply" which may have affected this plan:

  # module.prod.module.postgresql.aws_rds_cluster.default has changed
~ resource "aws_rds_cluster" "default" {
      ~ engine_version                        = "13.18" -> "13.20"
      ~ engine_version_actual                 = "13.18" -> "13.20"
        id                                    = "jfp-core-prod"
        tags                                  = {}
        # (58 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.stage.module.postgresql.aws_rds_cluster.default has changed
~ resource "aws_rds_cluster" "default" {
      ~ engine_version                        = "13.18" -> "13.20"
      ~ engine_version_actual                 = "13.18" -> "13.20"
        id                                    = "jfp-core-stage"
        tags                                  = {}
        # (58 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }


Unless you have made equivalent changes to your configuration, or ignored the
relevant attributes using ignore_changes, the following plan may include
actions to undo or respond to these changes.

─────────────────────────────────────────────────────────────────────────────

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
~ update in-place

Terraform will perform the following actions:

  # module.prod.module.postgresql.aws_rds_cluster.default will be updated in-place
~ resource "aws_rds_cluster" "default" {
      + enable_local_write_forwarding         = false
      ~ engine_version                        = "13.20" -> "13.18"
        id                                    = "jfp-core-prod"
        tags                                  = {}
        # (59 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.prod.module.postgresql.aws_rds_cluster_instance.default will be updated in-place
~ resource "aws_rds_cluster_instance" "default" {
      ~ engine_version                        = "13.20" -> "13.18"
      + force_destroy                         = false
        id                                    = "tf-20240604195536182300000003"
        tags                                  = {}
        # (32 unchanged attributes hidden)
    }

  # module.stage.module.postgresql.aws_rds_cluster.default will be updated in-place
~ resource "aws_rds_cluster" "default" {
      + enable_local_write_forwarding         = false
      ~ engine_version                        = "13.20" -> "13.18"
        id                                    = "jfp-core-stage"
        tags                                  = {}
        # (59 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.stage.module.postgresql.aws_rds_cluster_instance.default will be updated in-place
~ resource "aws_rds_cluster_instance" "default" {
      ~ engine_version                        = "13.20" -> "13.18"
      + force_destroy                         = false
        id                                    = "tf-20240618004835876400000003"
        tags                                  = {}
        # (32 unchanged attributes hidden)
    }

  # module.prod.module.arclight.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
      ~ desired_count                      = 4 -> 1
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/arclight-prod-service"
        name                               = "arclight-prod-service"
        tags                               = {}
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

Plan: 0 to add, 5 to change, 0 to destroy.
╷
│ Warning: Deprecated Resource
│ 
│   with module.datadog.datadog_integration_aws.sandbox,
│   on modules/aws/datadog/main.tf line 118, in resource "datadog_integration_aws" "sandbox":
│  118: resource "datadog_integration_aws" "sandbox" {
│ 
│ **This resource is deprecated - use the `datadog_integration_aws_account`
│ resource instead**:
│ https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account
╵
╷
│ Warning: Deprecated attribute
│ 
│   on .terraform/modules/datadog.datadog_log_forwarder/modules/log_forwarder/main.tf line 2, in locals:
│    2:   bucket_name = var.bucket_name != "" ? var.bucket_name : "datadog-forwarder-${data.aws_caller_identity.current.account_id}-${data.aws_region.current.name}"
│ 
│ The attribute "name" is deprecated. Refer to the provider documentation for
│ details.
│ 
│ (and 2 more similar warnings elsewhere)
╵
  • ▶️ To apply this plan, comment:
    atlantis apply -d infrastructure
  • 🚮 To delete this plan and lock, click here
  • 🔁 To plan this project again, comment:
    atlantis plan -d infrastructure

Note: Objects have changed outside of Terraform
Plan: 0 to add, 5 to change, 0 to destroy.


  • ⏩ To apply all unapplied plans from this Pull Request, comment:
    atlantis apply
  • 🚮 To delete all plans and locks from this Pull Request, comment:
    atlantis unlock

@github-actions github-actions bot temporarily deployed to Preview - short-links November 17, 2025 20:08 Inactive
@github-actions github-actions bot temporarily deployed to Preview - watch-modern November 17, 2025 20:08 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys-admin November 17, 2025 20:08 Inactive
@github-actions github-actions bot temporarily deployed to Preview - videos-admin November 17, 2025 20:08 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys November 17, 2025 20:08 Inactive
@jesus-film-bot
Copy link

Ran Plan for dir: infrastructure workspace: default

Show Output
Note: Objects have changed outside of Terraform

Terraform detected the following changes made outside of Terraform since the
last "terraform apply" which may have affected this plan:

  # module.prod.module.postgresql.aws_rds_cluster.default has changed
~ resource "aws_rds_cluster" "default" {
      ~ engine_version                        = "13.18" -> "13.20"
      ~ engine_version_actual                 = "13.18" -> "13.20"
        id                                    = "jfp-core-prod"
        tags                                  = {}
        # (58 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.stage.module.postgresql.aws_rds_cluster.default has changed
~ resource "aws_rds_cluster" "default" {
      ~ engine_version                        = "13.18" -> "13.20"
      ~ engine_version_actual                 = "13.18" -> "13.20"
        id                                    = "jfp-core-stage"
        tags                                  = {}
        # (58 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }


Unless you have made equivalent changes to your configuration, or ignored the
relevant attributes using ignore_changes, the following plan may include
actions to undo or respond to these changes.

─────────────────────────────────────────────────────────────────────────────

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
~ update in-place

Terraform will perform the following actions:

  # module.prod.module.postgresql.aws_rds_cluster.default will be updated in-place
~ resource "aws_rds_cluster" "default" {
      + enable_local_write_forwarding         = false
      ~ engine_version                        = "13.20" -> "13.18"
        id                                    = "jfp-core-prod"
        tags                                  = {}
        # (59 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.prod.module.postgresql.aws_rds_cluster_instance.default will be updated in-place
~ resource "aws_rds_cluster_instance" "default" {
      ~ engine_version                        = "13.20" -> "13.18"
      + force_destroy                         = false
        id                                    = "tf-20240604195536182300000003"
        tags                                  = {}
        # (32 unchanged attributes hidden)
    }

  # module.stage.module.postgresql.aws_rds_cluster.default will be updated in-place
~ resource "aws_rds_cluster" "default" {
      + enable_local_write_forwarding         = false
      ~ engine_version                        = "13.20" -> "13.18"
        id                                    = "jfp-core-stage"
        tags                                  = {}
        # (59 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.stage.module.postgresql.aws_rds_cluster_instance.default will be updated in-place
~ resource "aws_rds_cluster_instance" "default" {
      ~ engine_version                        = "13.20" -> "13.18"
      + force_destroy                         = false
        id                                    = "tf-20240618004835876400000003"
        tags                                  = {}
        # (32 unchanged attributes hidden)
    }

  # module.prod.module.arclight.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
      ~ desired_count                      = 4 -> 1
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/arclight-prod-service"
        name                               = "arclight-prod-service"
        tags                               = {}
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

Plan: 0 to add, 5 to change, 0 to destroy.
╷
│ Warning: Deprecated Resource
│ 
│   with module.datadog.datadog_integration_aws.sandbox,
│   on modules/aws/datadog/main.tf line 118, in resource "datadog_integration_aws" "sandbox":
│  118: resource "datadog_integration_aws" "sandbox" {
│ 
│ **This resource is deprecated - use the `datadog_integration_aws_account`
│ resource instead**:
│ https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account
╵
╷
│ Warning: Deprecated attribute
│ 
│   on .terraform/modules/datadog.datadog_log_forwarder/modules/log_forwarder/main.tf line 2, in locals:
│    2:   bucket_name = var.bucket_name != "" ? var.bucket_name : "datadog-forwarder-${data.aws_caller_identity.current.account_id}-${data.aws_region.current.name}"
│ 
│ The attribute "name" is deprecated. Refer to the provider documentation for
│ details.
│ 
│ (and 2 more similar warnings elsewhere)
╵
  • ▶️ To apply this plan, comment:
    atlantis apply -d infrastructure
  • 🚮 To delete this plan and lock, click here
  • 🔁 To plan this project again, comment:
    atlantis plan -d infrastructure

Note: Objects have changed outside of Terraform
Plan: 0 to add, 5 to change, 0 to destroy.


  • ⏩ To apply all unapplied plans from this Pull Request, comment:
    atlantis apply
  • 🚮 To delete all plans and locks from this Pull Request, comment:
    atlantis unlock

@mikeallisonJS mikeallisonJS merged commit 37fd177 into main Nov 17, 2025
38 of 39 checks passed
@mikeallisonJS mikeallisonJS deleted the mikeallison/nes-920-add-google-auth-integration-to-backend-no-qa branch November 17, 2025 20:33
@jesus-film-bot
Copy link

Locks and plans deleted for the projects and workspaces modified in this pull request:

  • dir: infrastructure workspace: default

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants