Files
triggerdotdev--trigger.dev/apps/webapp/test/utils/testReplicationClickhouseFactory.ts
Matt Aitken 71d98b4e6b Support for org-scoped ClickHouse (#3333)
Added `OrganizationDataStore` which allows orgs to have data stored in
specific separate services.

For now this is just used for ClickHouse. When using ClickHouse we get a
client for the factory and pass in the org id.

Particular care has to be made with two hot-insert paths:
1. RunReplicationService
2. OTLPExporter

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-05-22 14:43:03 +01:00

33 lines
1.1 KiB
TypeScript

import type { ClickHouse } from "@internal/clickhouse";
import {
ClickhouseFactory,
type ClientType,
} from "~/services/clickhouse/clickhouseFactory.server";
import type { OrganizationDataStoresRegistry } from "~/services/dataStores/organizationDataStoresRegistry.server";
const testReplicationRegistryStub = {
isLoaded: true,
isReady: Promise.resolve(),
get: () => null,
} as unknown as OrganizationDataStoresRegistry;
/**
* Routes all `replication` and `sessions_replication` clients to a single test ClickHouse;
* other client types use the real factory defaults.
*/
export class TestReplicationClickhouseFactory extends ClickhouseFactory {
constructor(private readonly replicationClient: ClickHouse) {
super(testReplicationRegistryStub);
}
override getClickhouseForOrganizationSync(
organizationId: string,
clientType: ClientType
): ClickHouse {
if (clientType === "replication" || clientType === "sessions_replication") {
return this.replicationClient;
}
return super.getClickhouseForOrganizationSync(organizationId, clientType);
}
}