@webda/aws
Version:
Webda AWS Services implementation
173 lines (172 loc) • 4.93 kB
TypeScript
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 };