UNPKG

@mbc-cqrs-serverless/sequence

Version:

Generate increment sequence with time-rotation

62 lines (61 loc) 2.45 kB
import { DataEntity, DetailKey, DynamoDbService, IInvoke } from '@mbc-cqrs-serverless/core'; import { GenerateFormattedSequenceDto, GenerateFormattedSequenceWithProvidedSettingDto, GenerateSequenceDto } from './dto'; import { SequenceEntity } from './entities/sequence.entity'; import { ISequenceService } from './interfaces/sequence-service.interface'; import { SequenceMasterDataProvider } from './sequence-master-factory'; export declare class SequencesService implements ISequenceService { private readonly dynamoDbService; private readonly masterDataProvider; private readonly logger; private readonly tableName; constructor(dynamoDbService: DynamoDbService, masterDataProvider: SequenceMasterDataProvider); /** * @deprecated This method is deprecated at V0.2. */ getCurrentSequence(key: DetailKey): Promise<DataEntity>; /** * @deprecated This method is deprecated at V0.2. * Seq data structure * - pk: SEQ#tenantCode * - sk: typeCode#rotateValue ( e.x: `user#20230401` ) * - code: typeCode#rotateValue * - name: rotateBy ( e.x: `daily` ) * - tenant_code: tenantCode * - type: typeCode * - seq: sequence value ( atomic counter ) */ genNewSequence(dto: GenerateSequenceDto, options: { invokeContext: IInvoke; }): Promise<DataEntity>; /** * Seq data structure * - pk: SEQ#tenantCode * - sk: typeCode#code1#code2#code3#code4#code5rotateValue ( e.x: `user#20230401` ) * - code: typeCode#rotateValue * - name: rotateBy ( e.x: `daily` ) * - tenant_code: tenantCode * - type: typeCode * - seq: sequence value ( atomic counter ) * - requestId: requestId * - createdAt: createdAt * - createdBy: createdBy * - createdIp: createdIp * - attributes: { * formatted_no: formattedNo ( e.x: `2023-04-01-0001` ) * fiscal_year: fiscalYear * issued_at: issuedAt * } */ generateSequenceItem(dto: GenerateFormattedSequenceDto, options?: { invokeContext: IInvoke; }): Promise<SequenceEntity>; generateSequenceItemWithProvideSetting(dto: GenerateFormattedSequenceWithProvidedSettingDto, options?: { invokeContext: IInvoke; }): Promise<SequenceEntity>; private getRotateValue; private isIncrementNo; private getFiscalYear; private createFormatDict; private createFormattedNo; private extractPaddingInfo; }