UNPKG

@webda/aws

Version:

Webda AWS Services implementation

173 lines (172 loc) 4.93 kB
import { DynamoDBDocument } from "@aws-sdk/lib-dynamodb"; import { CoreModel, Store, StoreFindResult, StoreParameters, WebdaQL } from "@webda/core"; import { WorkerOutput } from "@webda/workout"; import { CloudFormationDeployer } from "../deployers/cloudformation.js"; import { CloudFormationContributor } from "./index.js"; declare const DynamoStoreParameters_base: { new (...args: any[]): { endpoint?: string; credentials?: { accessKeyId: string; secretAccessKey: string; sessionToken?: string; }; region?: string; type: string; url?: string; openapi?: import("@webda/core/lib/router").OpenAPIWebdaDefinition; }; } & typeof StoreParameters; /** * Define DynamoDB parameters */ export declare class DynamoStoreParameters extends DynamoStoreParameters_base { /** * Table name */ table: string; /** * Additional global indexes */ globalIndexes?: { [key: string]: { key: string; sort?: string; }; }; /** * CloudFormation customization */ CloudFormation: any; CloudFormationSkip: boolean; scanPage: number; constructor(params: any, service: DynamoStore); } /** * DynamoStore handles the DynamoDB * * Parameters: * accessKeyId: '' // try WEBDA_AWS_KEY env variable if not found * secretAccessKey: '' // try WEBDA_AWS_SECRET env variable if not found * table: '' * region: '' * * @WebdaModda */ export default class DynamoStore<T extends CoreModel = CoreModel, K extends DynamoStoreParameters = DynamoStoreParameters> extends Store<T, K> implements CloudFormationContributor { _client: DynamoDBDocument; /** * Load the parameters * * @param params */ loadParameters(params: any): DynamoStoreParameters; /** * Create the AWS client */ resolve(): this; /** * Copy one DynamoDB table to another * * @param output * @param source * @param target */ static copyTable(output: WorkerOutput, source: string, target: string): Promise<void>; /** * @inheritdoc */ _exists(uid: any): Promise<boolean>; /** * @inheritdoc */ _save(object: any, uid?: string): Promise<any>; /** * @override * * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html */ find(query: WebdaQL.Query): Promise<StoreFindResult<T>>; /** * Serialize a date for DynamoDB * @param date * @returns */ _serializeDate(date: Date): string; /** * Clean object to store in DynamoDB * * @param object * @returns */ _cleanObject(object: Object): any; /** * @inheritdoc */ _removeAttribute(uuid: string, attribute: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<void>; /** * @inheritdoc */ _deleteItemFromCollection(uid: any, prop: any, index: any, itemWriteCondition: any, itemWriteConditionField: any, updateDate: Date): Promise<void>; /** * @inheritdoc */ _upsertItemToCollection(uuid: string, prop: string, item: any, index: number | undefined, itemWriteCondition: any | undefined, itemWriteConditionField: string | undefined, updateDate: Date): Promise<void>; /** * REturn the write condition as string * @param writeCondition * @param field * @returns */ setWriteCondition(params: any, writeCondition: any, field?: string): void; /** * @inheritdoc */ _delete(uid: string, writeCondition?: any, itemWriteConditionField?: string): Promise<void>; /** * @inheritdoc */ _patch(object: any, uid: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<void>; /** * @inheritdoc */ _update(object: any, uid: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<any>; /** * @inheritdoc */ _scan(items?: any[], paging?: any): Promise<T[]>; /** * @inheritdoc */ getAll(uids?: string[]): Promise<T[]>; /** * @inheritdoc */ _get(uid: string, raiseIfNotFound?: boolean): Promise<T>; /** * @inheritdoc */ _incrementAttributes(uid: any, parameters: { property: string; value: number; }[], updateDate: Date): Promise<import("@aws-sdk/lib-dynamodb").UpdateCommandOutput>; /** * @inheritdoc */ getARNPolicy(accountId: string): { Sid: string; Effect: string; Action: string[]; Resource: string[]; }; /** * @inheritdoc */ __clean(): Promise<void>; /** * @inheritdoc */ getCloudFormation(deployer: CloudFormationDeployer): {}; } export { DynamoStore };