postiz/libraries/nestjs-libraries/src/temporal/temporal.register.ts

51 lines
1.3 KiB
TypeScript

import {
Global,
Injectable,
Module,
OnModuleInit,
} from '@nestjs/common';
import { TemporalService } from 'nestjs-temporal-core';
import { Connection } from '@temporalio/client';
@Injectable()
export class TemporalRegister implements OnModuleInit {
constructor(private _client: TemporalService) {}
async onModuleInit(): Promise<void> {
const connection = this._client?.client?.getRawClient()
?.connection as Connection;
const { customAttributes } =
await connection.operatorService.listSearchAttributes({
namespace: process.env.TEMPORAL_NAMESPACE || 'default',
});
const neededAttribute = ['organizationId', 'postId'];
const missingAttributes = neededAttribute.filter(
(attr) => !customAttributes[attr],
);
if (missingAttributes.length > 0) {
await connection.operatorService.addSearchAttributes({
namespace: process.env.TEMPORAL_NAMESPACE || 'default',
searchAttributes: missingAttributes.reduce((all, current) => {
// @ts-ignore
all[current] = 1;
return all;
}, {}),
});
}
}
}
@Global()
@Module({
imports: [],
controllers: [],
providers: [TemporalRegister],
get exports() {
return this.providers;
},
})
export class TemporalRegisterMissingSearchAttributesModule {}