Skip to content

Commit

Permalink
Fix script options + queue id type fix
Browse files Browse the repository at this point in the history
  • Loading branch information
CarlosGamero committed Feb 18, 2025
1 parent 78c81ca commit 929f061
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 36 deletions.
4 changes: 2 additions & 2 deletions scripts/cmd/getUserImportJobs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ const ARGUMENTS_SCHEMA = z.object({
type Arguments = z.infer<typeof ARGUMENTS_SCHEMA>

const command = async (deps: Dependencies, reqContext: RequestContext, args: Arguments) => {
const userImportJob = deps.userImportJob
const queueManager = deps.bullmqQueueManager

const jobs = await userImportJob.getJobsInQueue([args.queue])
const jobs = await queueManager.getJobsInQueue('UserImportJob', [args.queue])
reqContext.logger.info(jobs, `${args.queue} jobs`)
}

Expand Down
6 changes: 4 additions & 2 deletions scripts/generateOpenApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ const targetPath = resolve(getRootDirectory(), 'openApiSpec.yaml')

async function run() {
const app = await getApp({
queuesEnabled: false,
jobsEnabled: false,
healthchecksEnabled: false,
monitoringEnabled: false,
arePeriodicJobsEnabled: false,
consumersEnabled: false,
enqueuedJobsEnabled: false,
backgroundQueuesEnabled: true,
})

const openApiSpecResponse = await app.inject().get('/documentation/openapi.json')
Expand Down
9 changes: 4 additions & 5 deletions scripts/utils/cliCommandWrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,12 @@ export const cliCommandWrapper = async <ArgsSchema extends z.Schema | undefined>
argsSchema?: ArgsSchema,
): Promise<void> => {
const app = await getApp({
queuesEnabled: false,
jobsEnabled: false,
healthchecksEnabled: false,
monitoringEnabled: false,
app: {
cliMode: true,
},
arePeriodicJobsEnabled: false,
consumersEnabled: false,
enqueuedJobsEnabled: false,
backgroundQueuesEnabled: true,
})

const requestId = generateMonotonicUuid()
Expand Down
2 changes: 0 additions & 2 deletions src/app.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { EventEmitter } from 'node:events'
import type http from 'node:http'

import type { ServerZoneType } from '@amplitude/analytics-types'
import fastifyAuth from '@fastify/auth'
import { fastifyAwilixPlugin } from '@fastify/awilix'
Expand Down Expand Up @@ -33,7 +32,6 @@ import {
validatorCompiler,
} from 'fastify-type-provider-zod'
import type { ZodTypeProvider } from 'fastify-type-provider-zod'

import { merge } from 'ts-deepmerge'
import type { PartialDeep } from 'type-fest'
import { type Config, getConfig, isDevelopment } from './infrastructure/config.js'
Expand Down
12 changes: 2 additions & 10 deletions src/infrastructure/commonDiConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,7 @@ import { ToadScheduler } from 'toad-scheduler'
import type z from 'zod'
import { FakeStoreApiClient } from '../integrations/FakeStoreApiClient.js'
import { PermissionsMessages } from '../modules/users/consumers/permissionsMessageSchemas.js'
import {
USER_IMPORT_JOB_PAYLOAD,
UserImportJob,
} from '../modules/users/job-queue-processors/UserImportJob.js'
import { userBullmqQueues } from '../modules/users/userDiConfig.js'
import { getAmqpConfig, getConfig, isTest } from './config.js'
import type { Config } from './config.js'
import {
Expand Down Expand Up @@ -72,12 +69,7 @@ export type PublisherManager = AmqpTopicPublisherManager<
AmqpSupportedMessages
>

const bullmqSupportedQueues = [
{
queueId: UserImportJob.QUEUE_ID,
jobPayloadSchema: USER_IMPORT_JOB_PAYLOAD,
},
] as const satisfies QueueConfiguration[]
const bullmqSupportedQueues = [...userBullmqQueues] as const satisfies QueueConfiguration[]
export type BullmqSupportedQueues = typeof bullmqSupportedQueues

export function resolveCommonDiConfig(
Expand Down
4 changes: 1 addition & 3 deletions src/infrastructure/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ export type AppConfig = {
metrics: {
isEnabled: boolean
}
cliMode: boolean
}

export function getConfig(): Config {
Expand Down Expand Up @@ -201,12 +200,11 @@ export function getAppConfig(): AppConfig {
nodeEnv: configScope.getMandatoryOneOf('NODE_ENV', ['production', 'development', 'test']),
appEnv: configScope.getMandatoryOneOf('APP_ENV', ['production', 'development', 'staging']),
appVersion: configScope.getOptional('APP_VERSION', 'VERSION_NOT_SET'),
baseUrl: configScope.getOptional('BASE_URL', ``),
baseUrl: configScope.getOptional('BASE_URL', ''),
gitCommitSha: configScope.getOptional('GIT_COMMIT_SHA', 'COMMIT_SHA_NOT_SET'),
metrics: {
isEnabled: configScope.getOptionalBoolean('METRICS_ENABLED', !configScope.isDevelopment()),
},
cliMode: false, // If a different value is needed, it should be passed to the app directly
}
}

Expand Down
19 changes: 10 additions & 9 deletions src/modules/users/job-queue-processors/UserImportJob.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,29 @@ import { cleanRedis } from '../../../../test/RedisCleaner.js'
import type { TestContext } from '../../../../test/TestContext.js'
import { createTestContext, destroyTestContext } from '../../../../test/TestContext.js'

import type { QueueManager } from '@lokalise/background-jobs-common'
import { user as userTable } from '../../../db/schema/user.js'
import type { BullmqSupportedQueues } from '../../../infrastructure/commonDiConfig.js'
import { UserImportJob } from './UserImportJob.js'

describe('UserImportJob', () => {
let testContext: TestContext

let userImportJob: UserImportJob
let bullmqQueueManager: QueueManager<BullmqSupportedQueues>

beforeAll(async () => {
testContext = await createTestContext(
{},
{
enqueuedJobsEnabled: [UserImportJob.QUEUE_ID],
backgroundQueuesEnabled: [UserImportJob.QUEUE_ID],
},
)
await cleanRedis(testContext.diContainer.cradle.redis)
await cleanTables(testContext.diContainer.cradle.drizzle, [DB_MODEL.User])
userImportJob = testContext.diContainer.cradle.userImportJob
bullmqQueueManager = testContext.diContainer.cradle.bullmqQueueManager
})

afterAll(async () => {
Expand All @@ -34,16 +40,11 @@ describe('UserImportJob', () => {
email: '[email protected]',
}

const jobId = await userImportJob.schedule({
payload: userData,
metadata: {
correlationId: 'dummy',
},
const jobId = await bullmqQueueManager.schedule('UserImportJob', {
...userData,
metadata: { correlationId: 'dummy' },
})
const result = await testContext.diContainer.cradle.userImportJob.spy.waitForJobWithId(
jobId,
'completed',
)
const result = await userImportJob.spy.waitForJobWithId(jobId, 'completed')

const users = await testContext.diContainer.cradle.drizzle.select().from(userTable)
expect(users).toHaveLength(1)
Expand Down
4 changes: 2 additions & 2 deletions src/modules/users/job-queue-processors/UserImportJob.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export const USER_IMPORT_JOB_PAYLOAD = BASE_JOB_PAYLOAD_SCHEMA.extend({
type UserImportJobPayload = z.infer<typeof USER_IMPORT_JOB_PAYLOAD>

export class UserImportJob extends AbstractEnqueuedJobProcessor<'UserImportJob'> {
public static QUEUE_ID = 'UserImportJob'
public static readonly QUEUE_ID = 'UserImportJob'
private readonly userService: UserService

constructor(dependencies: Dependencies) {
Expand All @@ -39,7 +39,7 @@ export class UserImportJob extends AbstractEnqueuedJobProcessor<'UserImportJob'>
{
userId: user.id,
},
`Created new user`,
'Created new user',
)
}
}
10 changes: 9 additions & 1 deletion src/modules/users/userDiConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ import {
} from '../../infrastructure/diConfigUtils.js'
import { SINGLETON_CONFIG } from '../../infrastructure/parentDiConfig.js'

import type { QueueConfiguration } from '@lokalise/background-jobs-common'
import type { User } from '../../db/schema/user.js'
import { PermissionConsumer } from './consumers/PermissionConsumer.js'
import { UserDataSource } from './datasources/UserDataSource.js'
import { UserImportJob } from './job-queue-processors/UserImportJob.js'
import { USER_IMPORT_JOB_PAYLOAD, UserImportJob } from './job-queue-processors/UserImportJob.js'
import { DeleteOldUsersJob } from './periodic-jobs/DeleteOldUsersJob.js'
import { ProcessLogFilesJob } from './periodic-jobs/ProcessLogFilesJob.js'
import { SendEmailsJob } from './periodic-jobs/SendEmailsJob.js'
Expand Down Expand Up @@ -126,3 +127,10 @@ export function resolveUsersConfig(options: DIOptions): UsersDiConfig {
}),
}
}

export const userBullmqQueues = [
{
queueId: UserImportJob.QUEUE_ID,
jobPayloadSchema: USER_IMPORT_JOB_PAYLOAD,
},
] as const satisfies QueueConfiguration[]

0 comments on commit 929f061

Please sign in to comment.