@mbc-cqrs-serverless/sequence
Version:
Generate increment sequence with time-rotation
62 lines (61 loc) • 2.45 kB
TypeScript
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;
}