/// import { ICatalystGResponse, ICatalystJSON } from '../utils/pojo/common'; import { NoSQLByte } from './byte'; import { AttribType, DataType, NoSQLConditionGroupOperator, NoSQLCrudOperation, NoSQLOperator, NoSQLReturnValue, NoSQLUpdateOperationType } from './enum'; import { NoSQLItem } from './item'; import { NoSQLByteSet, NoSQLNumberSet, NoSQLStringSet } from './set'; export interface INoSQLBase extends ICatalystGResponse { id: string; name: string; partition_key: INoSQLKeyColumn; sort_key?: INoSQLKeyColumn; type?: string; status: 'CREATING' | 'ONLINE' | 'OFFLINE' | 'DELETED'; metrics?: Record; } export interface INoSQLKeyColumn { column_name: string; data_type: string | DataType; } export interface INoSQLTable extends INoSQLBase { ttl_enabled: boolean; api_access?: boolean; ttl_attribute?: string; additional_sort_keys: Array; local_index?: Array; global_index: Array; } export interface INoSQLIndex extends INoSQLBase { id: string; name: string; projected_attributes: IProjectedAttributes; } export interface IProjectedAttributes { type: string | AttribType; include_columns?: Set; } export type TNoSQLByte = Buffer | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array; export type TNoSQLValues = null | boolean | string | TNoSQLByte | number | bigint | Set | NoSQLStringSet | Set | NoSQLNumberSet | Set | NoSQLByteSet | Array | { [key: string]: TNoSQLValues; } | Map; export type TNoSQLAttribute = Partial<{ [DataType.NULL]: boolean; [DataType.S]: string; [DataType.B]: NoSQLByte; [DataType.BOOL]: string; [DataType.N]: string; [DataType.SS]: NoSQLStringSet; [DataType.SN]: NoSQLNumberSet; [DataType.SB]: NoSQLByteSet; [DataType.L]: Array; [DataType.M]: TNoSQLItem; }>; export type TNoSQLAttributeResponse = Partial<{ [DataType.NULL]: boolean; [DataType.S]: string; [DataType.B]: string; [DataType.BOOL]: string; [DataType.N]: string; [DataType.SS]: Array; [DataType.SN]: Array; [DataType.SB]: Array; [DataType.L]: Array; [DataType.M]: Record; }>; export type TNoSQLItem = Record; export interface INoSQLConditionFunction { function_name: 'attribute_exists' | 'attribute_type'; args: Array<{ attribute_path: Array | string; } | { [DataType.S]: string; }>; } export interface INoSQLUpdateAttributeFunction { function_name: 'add' | 'append_list' | 'if_not_exists' | 'subtract'; args: Array<{ attribute_path: Array; } | TNoSQLAttribute>; } export interface INoSQLCondition { function?: INoSQLConditionFunction; attribute?: string | Array; operator?: NoSQLOperator; value?: TNoSQLAttribute; group_operator?: NoSQLConditionGroupOperator; group?: Array; negate?: boolean; } export interface NoSQLUpdateAttributeOperation { operation_type: NoSQLUpdateOperationType | string; attribute_path: Array; update_value?: TNoSQLAttribute; update_function?: INoSQLUpdateAttributeFunction; } export interface INoSQLData { status: string; old_item?: TNoSQLItem; item?: TNoSQLItem; } export interface INoSQLResponse { size: number; get: Array; update: Array; delete: Array; create: Array; start_key: TNoSQLItem; operation: NoSQLCrudOperation; } export interface INoSQLInsertItem extends ICatalystJSON { item: NoSQLItem | TNoSQLItem; return?: NoSQLReturnValue; condition?: INoSQLCondition; } export interface INoSQLUpdateItem extends ICatalystJSON { keys: NoSQLItem | TNoSQLItem; return?: NoSQLReturnValue; condition?: INoSQLCondition; update_attributes: Array; } export interface INoSQLDeleteItem extends ICatalystJSON { keys: NoSQLItem | TNoSQLItem; return?: NoSQLReturnValue; condition?: INoSQLCondition; } export interface INoSQLFetchItem extends ICatalystJSON { keys: Array | NoSQLItem | TNoSQLItem; consistent_read?: boolean; required_attributes?: Array>; } export interface INoSQLQuery extends ICatalystJSON { key_condition: INoSQLCondition; forward_scan?: boolean; limit?: number; required_attributes?: Array>; other_condition?: INoSQLCondition; start_key?: NoSQLItem | TNoSQLItem; consistent_read?: boolean; additional_sort_key?: string; }