diff --git a/.changeset/smart-mice-doubt.md b/.changeset/smart-mice-doubt.md new file mode 100644 index 000000000..5c9322f82 --- /dev/null +++ b/.changeset/smart-mice-doubt.md @@ -0,0 +1,5 @@ +--- +'@baseplate-dev/fastify-generators': patch +--- + +Fix handling of data operations with falsy update values diff --git a/examples/blog-with-auth/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts b/examples/blog-with-auth/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts index e81c5c7a4..988fb61c0 100644 --- a/examples/blog-with-auth/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts +++ b/examples/blog-with-auth/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts @@ -145,7 +145,7 @@ export async function transformFields< loadExisting, }); - if (result.data) { + if (result.data !== undefined) { data[fieldKey as keyof TFields] = result.data as FieldDataOrFunction< TFields[keyof TFields] >; @@ -173,7 +173,7 @@ export async function transformFields< create[key as keyof TFields] = value.create as InferFieldsCreateOutput[keyof TFields]; } - if (value.update) { + if (value.update !== undefined) { update[key as keyof TFields] = value.update as InferFieldsUpdateOutput[keyof TFields]; } diff --git a/examples/blog-with-auth/apps/backend/src/utils/data-operations/define-operations.ts b/examples/blog-with-auth/apps/backend/src/utils/data-operations/define-operations.ts index e81c5c7a4..988fb61c0 100644 --- a/examples/blog-with-auth/apps/backend/src/utils/data-operations/define-operations.ts +++ b/examples/blog-with-auth/apps/backend/src/utils/data-operations/define-operations.ts @@ -145,7 +145,7 @@ export async function transformFields< loadExisting, }); - if (result.data) { + if (result.data !== undefined) { data[fieldKey as keyof TFields] = result.data as FieldDataOrFunction< TFields[keyof TFields] >; @@ -173,7 +173,7 @@ export async function transformFields< create[key as keyof TFields] = value.create as InferFieldsCreateOutput[keyof TFields]; } - if (value.update) { + if (value.update !== undefined) { update[key as keyof TFields] = value.update as InferFieldsUpdateOutput[keyof TFields]; } diff --git a/examples/todo-with-auth0/apps/backend/baseplate/generated/src/tests/scripts/global-setup-redis.ts b/examples/todo-with-auth0/apps/backend/baseplate/generated/src/tests/scripts/global-setup-redis.ts index f9024fccf..7ef9e7a7d 100644 --- a/examples/todo-with-auth0/apps/backend/baseplate/generated/src/tests/scripts/global-setup-redis.ts +++ b/examples/todo-with-auth0/apps/backend/baseplate/generated/src/tests/scripts/global-setup-redis.ts @@ -1,4 +1,4 @@ -export default async function setup(): Promise { +export default function setup(): void { // Set Redis key prefix for test isolation process.env.REDIS_KEY_PREFIX = 'test:'; console.info('Redis key prefix set to "test:" for isolation'); diff --git a/examples/todo-with-auth0/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts b/examples/todo-with-auth0/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts index e81c5c7a4..988fb61c0 100644 --- a/examples/todo-with-auth0/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts +++ b/examples/todo-with-auth0/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts @@ -145,7 +145,7 @@ export async function transformFields< loadExisting, }); - if (result.data) { + if (result.data !== undefined) { data[fieldKey as keyof TFields] = result.data as FieldDataOrFunction< TFields[keyof TFields] >; @@ -173,7 +173,7 @@ export async function transformFields< create[key as keyof TFields] = value.create as InferFieldsCreateOutput[keyof TFields]; } - if (value.update) { + if (value.update !== undefined) { update[key as keyof TFields] = value.update as InferFieldsUpdateOutput[keyof TFields]; } diff --git a/examples/todo-with-auth0/apps/backend/src/utils/data-operations/define-operations.ts b/examples/todo-with-auth0/apps/backend/src/utils/data-operations/define-operations.ts index e81c5c7a4..988fb61c0 100644 --- a/examples/todo-with-auth0/apps/backend/src/utils/data-operations/define-operations.ts +++ b/examples/todo-with-auth0/apps/backend/src/utils/data-operations/define-operations.ts @@ -145,7 +145,7 @@ export async function transformFields< loadExisting, }); - if (result.data) { + if (result.data !== undefined) { data[fieldKey as keyof TFields] = result.data as FieldDataOrFunction< TFields[keyof TFields] >; @@ -173,7 +173,7 @@ export async function transformFields< create[key as keyof TFields] = value.create as InferFieldsCreateOutput[keyof TFields]; } - if (value.update) { + if (value.update !== undefined) { update[key as keyof TFields] = value.update as InferFieldsUpdateOutput[keyof TFields]; } diff --git a/packages/fastify-generators/src/generators/prisma/data-utils/templates/src/utils/data-operations/define-operations.ts b/packages/fastify-generators/src/generators/prisma/data-utils/templates/src/utils/data-operations/define-operations.ts index f13dfceb5..b96fb198a 100644 --- a/packages/fastify-generators/src/generators/prisma/data-utils/templates/src/utils/data-operations/define-operations.ts +++ b/packages/fastify-generators/src/generators/prisma/data-utils/templates/src/utils/data-operations/define-operations.ts @@ -143,7 +143,7 @@ export async function transformFields< loadExisting, }); - if (result.data) { + if (result.data !== undefined) { data[fieldKey as keyof TFields] = result.data as FieldDataOrFunction< TFields[keyof TFields] >; @@ -171,7 +171,7 @@ export async function transformFields< create[key as keyof TFields] = value.create as InferFieldsCreateOutput[keyof TFields]; } - if (value.update) { + if (value.update !== undefined) { update[key as keyof TFields] = value.update as InferFieldsUpdateOutput[keyof TFields]; } diff --git a/tests/simple/apps/backend/baseplate/file-id-map.json b/tests/simple/apps/backend/baseplate/file-id-map.json index d0e6f2603..239ba6792 100644 --- a/tests/simple/apps/backend/baseplate/file-id-map.json +++ b/tests/simple/apps/backend/baseplate/file-id-map.json @@ -6,7 +6,7 @@ "@baseplate-dev/core-generators#node/prettier:prettier-ignore": ".prettierignore", "@baseplate-dev/core-generators#node/ts-utils:string": "src/utils/string.ts", "@baseplate-dev/core-generators#node/typescript:tsconfig": "tsconfig.json", - "@baseplate-dev/core-generators#node/vitest:global-setup": "src/tests/scripts/global-setup.ts", + "@baseplate-dev/core-generators#node/vitest:global-setup-env": "src/tests/scripts/global-setup-env.ts", "@baseplate-dev/core-generators#node/vitest:logger-test-helper": "src/tests/helpers/logger.test-helper.ts", "@baseplate-dev/core-generators#node/vitest:vitest-config": "vitest.config.ts", "@baseplate-dev/fastify-generators#core/app-module-setup:app-modules": "src/utils/app-modules.ts", @@ -60,6 +60,7 @@ "@baseplate-dev/fastify-generators#prisma/prisma:seed": "src/prisma/seed.ts", "@baseplate-dev/fastify-generators#prisma/prisma:service": "src/services/prisma.ts", "@baseplate-dev/fastify-generators#vitest/prisma-vitest:db-test-helper": "src/tests/helpers/db.test-helper.ts", + "@baseplate-dev/fastify-generators#vitest/prisma-vitest:global-setup-prisma": "src/tests/scripts/global-setup-prisma.ts", "@baseplate-dev/fastify-generators#vitest/prisma-vitest:prisma-test-helper": "src/tests/helpers/prisma.test-helper.ts", "@baseplate-dev/fastify-generators#yoga/yoga-plugin:graphql-plugin": "src/plugins/graphql/index.ts", "@baseplate-dev/fastify-generators#yoga/yoga-plugin:use-graph-logger": "src/plugins/graphql/use-graph-logger.ts" diff --git a/tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup-env.ts b/tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup-env.ts new file mode 100644 index 000000000..3fbb95ac7 --- /dev/null +++ b/tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup-env.ts @@ -0,0 +1,7 @@ +import { loadEnvFile } from 'node:process'; + +loadEnvFile('.env'); + +export default async function setup(): Promise { + // Environment loaded +} diff --git a/tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup.ts b/tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup-prisma.ts similarity index 90% rename from tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup.ts rename to tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup-prisma.ts index a0fb921d6..5c6984b90 100644 --- a/tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup.ts +++ b/tests/simple/apps/backend/baseplate/generated/src/tests/scripts/global-setup-prisma.ts @@ -1,9 +1,5 @@ -import { loadEnvFile } from 'node:process'; - import { createTestDatabase } from '../helpers/db.test-helper.js'; -loadEnvFile('.env'); - export default async function setup(): Promise { const { TEST_MODE } = process.env; diff --git a/tests/simple/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts b/tests/simple/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts index e81c5c7a4..988fb61c0 100644 --- a/tests/simple/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts +++ b/tests/simple/apps/backend/baseplate/generated/src/utils/data-operations/define-operations.ts @@ -145,7 +145,7 @@ export async function transformFields< loadExisting, }); - if (result.data) { + if (result.data !== undefined) { data[fieldKey as keyof TFields] = result.data as FieldDataOrFunction< TFields[keyof TFields] >; @@ -173,7 +173,7 @@ export async function transformFields< create[key as keyof TFields] = value.create as InferFieldsCreateOutput[keyof TFields]; } - if (value.update) { + if (value.update !== undefined) { update[key as keyof TFields] = value.update as InferFieldsUpdateOutput[keyof TFields]; } diff --git a/tests/simple/apps/backend/baseplate/generated/vitest.config.ts b/tests/simple/apps/backend/baseplate/generated/vitest.config.ts index 1bc85c7b8..8f486aa93 100644 --- a/tests/simple/apps/backend/baseplate/generated/vitest.config.ts +++ b/tests/simple/apps/backend/baseplate/generated/vitest.config.ts @@ -5,7 +5,10 @@ export default defineConfig({ plugins: [tsconfigPaths()], test: { clearMocks: true, - globalSetup: './tests/scripts/global-setup.ts', + globalSetup: [ + './tests/scripts/global-setup-env.ts', + './tests/scripts/global-setup-prisma.ts', + ], maxWorkers: 1, passWithNoTests: true, root: './src', diff --git a/tests/simple/apps/backend/src/tests/scripts/global-setup-env.ts b/tests/simple/apps/backend/src/tests/scripts/global-setup-env.ts new file mode 100644 index 000000000..3fbb95ac7 --- /dev/null +++ b/tests/simple/apps/backend/src/tests/scripts/global-setup-env.ts @@ -0,0 +1,7 @@ +import { loadEnvFile } from 'node:process'; + +loadEnvFile('.env'); + +export default async function setup(): Promise { + // Environment loaded +} diff --git a/tests/simple/apps/backend/src/tests/scripts/global-setup.ts b/tests/simple/apps/backend/src/tests/scripts/global-setup-prisma.ts similarity index 90% rename from tests/simple/apps/backend/src/tests/scripts/global-setup.ts rename to tests/simple/apps/backend/src/tests/scripts/global-setup-prisma.ts index a0fb921d6..5c6984b90 100644 --- a/tests/simple/apps/backend/src/tests/scripts/global-setup.ts +++ b/tests/simple/apps/backend/src/tests/scripts/global-setup-prisma.ts @@ -1,9 +1,5 @@ -import { loadEnvFile } from 'node:process'; - import { createTestDatabase } from '../helpers/db.test-helper.js'; -loadEnvFile('.env'); - export default async function setup(): Promise { const { TEST_MODE } = process.env; diff --git a/tests/simple/apps/backend/src/utils/data-operations/define-operations.ts b/tests/simple/apps/backend/src/utils/data-operations/define-operations.ts index e81c5c7a4..988fb61c0 100644 --- a/tests/simple/apps/backend/src/utils/data-operations/define-operations.ts +++ b/tests/simple/apps/backend/src/utils/data-operations/define-operations.ts @@ -145,7 +145,7 @@ export async function transformFields< loadExisting, }); - if (result.data) { + if (result.data !== undefined) { data[fieldKey as keyof TFields] = result.data as FieldDataOrFunction< TFields[keyof TFields] >; @@ -173,7 +173,7 @@ export async function transformFields< create[key as keyof TFields] = value.create as InferFieldsCreateOutput[keyof TFields]; } - if (value.update) { + if (value.update !== undefined) { update[key as keyof TFields] = value.update as InferFieldsUpdateOutput[keyof TFields]; } diff --git a/tests/simple/apps/backend/vitest.config.ts b/tests/simple/apps/backend/vitest.config.ts index 1bc85c7b8..8f486aa93 100644 --- a/tests/simple/apps/backend/vitest.config.ts +++ b/tests/simple/apps/backend/vitest.config.ts @@ -5,7 +5,10 @@ export default defineConfig({ plugins: [tsconfigPaths()], test: { clearMocks: true, - globalSetup: './tests/scripts/global-setup.ts', + globalSetup: [ + './tests/scripts/global-setup-env.ts', + './tests/scripts/global-setup-prisma.ts', + ], maxWorkers: 1, passWithNoTests: true, root: './src',