r      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None$%&,69:;<=?DLTbOperation on range key for .fClass to limit certain operations to text-like only in queries. Members of this class can be keys to . 'Class to limit +=. and -=. for updates. >Typeclass showing that this datatype can be saved to DynamoDB. Encode data. Return  if attribute should be omitted.Decode data. Return  on parsing error, gets 7 on input if the attribute was missing in the database.Aid for searching for empty list and hashmap; these can be represented both by empty list and by missing value, if this returns true, enhance search.XTypeclass signifying that this is a scalar attribute and can be used as a hash/sort key. zinstance DynamoScalar Network.AWS.DynamoDB.Types.S T.Text where scalarEncode = ScS scalarDecode (ScS txt) = Just txt)Scalars must have total encoding function#Datatype for encoding scalar values2Exceptions thrown by some dynamodb-simple actions.!LPartial encoding/decoding Aeson values. Empty strings get converted to NULL.#(DynamoDB cannot represent empty items; [ a] will lose Nothings.& ( a) will not work well; it will join the value in the database.1Don't use Double as a part of primary key in a table. It is included here for convenience to be used as a range key in indexes.2Double as a primary key isn't generally a good thing as equality on double is sometimes a little dodgy. Use scientific instead.3Helper for tagged valuesA  !"#$%&'()*+,-./0123456789:   ,   !"#$%&'()*+,-./0123456789:None>Create lenses if the field in the primary table starts with _.class Test_lens_field00 a b | a -> b where _field :: Functor f => (b -> f b) -> a -> f a instance Test_lens_field00 Test (Maybe T.Text) where field f t = (txt -> t{_field=txt})  $ f (_field t)5Reify name and return list of record fields with typeNone%&,9:;<=DLRT+Allow skipping over maybe types when using .<Query direction?:Parameter for queries involving read consistency settings.BBFilter condition. Use with scan, query, update and delete methods.(Filtering on primary key is not allowed.CNegate condition:Class to get a column name from a Type specifying a column7Signifies that the column is present in the table/index?Internal representation of a part of path in a nested structureD-Representation of a column for filter queries&typ - datatype of column (Int, Text..)7coltype - TypColumn or TypSize (result of size(column))8col - instance of ColumnInfo, uniquely identify a column%Smart constructor for Column datatypeDReturn filter expression, attribute name map and attribute value mapLens to help set consistency.E*Combine attributes from nested structures. address' <.> street'F!Access an index in a nested list. users' <!> 0 <.> name'G!Access a key in a nested hashmap. !phones' <!:> "mobile" <.> number'0<=>?@ABCDEFG/<=>?@ABCDEFG<=>?@AB CDEFGE7F8G8None,:I HAn action for   functions.INGenerate an action expression and associated structures from a list of actionsJ"Add a number to a saved attribute.K)Subtract a number from a saved attribute.L Set an attribute to a new value.M.Set on a Maybe type, if it was not set before.N'Append a new value to an end of a list.O'Insert a value to a beginning of a listPAdd a new value to a set.QRemove a value from a set.RDelete n-th list of an item.SDelete a key from a map.'HIJKLMNOPQRSTUVW HIJKLMNOPQRS HJKLMNOPQRSIHIJKLMNOPQRSTUVWJ4K4L4None %&,:T Z Numeric/string range comparison.[6a IN (b, c, d); the list may contain up to 100 values.\Check existence of attribute.]$Checks non-existence of an attribute^Comparison for text columns._,CONTAINS condition for text-like attributes.`CONTAINS condition for sets.a/Size (i.e. number of bytes) of saved attribute.bAND for combining conditions.cOR for combining conditionsdRTests for equality. Automatically adjusts query to account for missing attributes.:Note: checks against empty values esentially translate to ].e a /= b === Not (a == b)Z[\]^_`abcdefghiBCZ[\]^_`abcdefghiBCbcdeihfg\]^_`[ZaZ[\]^_`abcdefghib3c3d4e4f4g4h4i4 None%&+,69:;<=?DLOQRT3Extract table primary key from an item, if possible+Class representing a Global Secondary Index Parameter type for queryKeyRange Return table name and index name'Instance for tables that can be queried Return table name and index nameuCreate a query using both hash key and operation on range key On tables without range key, this degrades to queryKey0Dispatch class for NoRange/WithRange createTableDescritpion of dynamo table8Dynamo table/index name; default is the constructor name(Serialize data, put it into the databasejBasic instance for dynamo collection (table or index) This instances fixes the tableName and the sort key6Helper type to distinguish index and table collectionsj:Data collection type - with hash key or with hash+sort key Return first field of a datatype#Return first 2 fields of a datatype-Decode hashmap to a record using generic-sop.:jkl     "jkl %jkl      None ,:DLQRT\5Periodically check state of table, until it is ACTIVE*Delete specified indices from the database'Update table with specified new indices FCompare intersection of new and old indexes and find inconsistent ones!TVerbatim copy of findInconsistentIdxes, but changed to localSecondaryIndex structure"dCompare indexes and return list of indices to delete and to create; indices to recreate are included#$Change streaming settings on a table$Main table migration code% !"&#$'()**% !"&#$'()* None%&,:DOQRT\mOptions for a generic query.+GThis sets the "D.qLimit" settings for maximum number of evaluated items,uKey after which the evaluation starts. When paging, this should be set to qrsLastEvaluatedKey of the last operation.-0Helper function to decode data from the conduit.n@Record for defining scan command. Use lenses to set the content.+sParallel: (Segment number, Total segments).(Segment number, TotalSegments)/When  1https://github.com/brendanhay/amazonka/issues/340 is fixed, removev#Default settings for query options.0 Generate a D.Query objectwGeneric query function. You can query table or indexes that have a range key defined. The filter condition cannot access the hash and range keys.x/Perform a simple, eventually consistent, query.ESimple to use function to query limited amount of data from database.yQuery with conditionzFetch exactly the required count of items even when it means more calls to dynamodb. Return last evaluted key if end of data was not reached. Use u to continue reading the query.1-Generic query interface for scanning/querying"Conduit source for running a scan.RFunction to call bounded scans. Tries to return exactly requested number of items.Use  to continue the scan.2 Generate a D.Query object*Scan table using a given filter condition. =scanCond (colAddress <!:> "Home" <.> colCity ==. "London") 103m345678+,-9n:;<=.>?@/Aopqrstuv0wxProxy type of a table to queryHash keyRange conditionScan direction Maximum number of items to fetchyHash keyRange conditionScan direction Maximum number of items to fetchz Maximum number of items to fetch1 Maximum number of items to fetchBCDEF{|}~ Scan settingsRequired result countBlist of results, lastEvalutedKey or Nothing if end of data reached2mnopqrstuvwxyz{|}~#m345678+,-9n:;<=.>?@/Aopqrstuv0wxyz1BCDEF{|}~2 NoneG Create ContainsTableKey instanceGGGNone!"L6Configuration of TH macro for creating table instances(Table type, primary key type, table name/Global index type, primary key type, index nameLocal index type, index name>Translation of haskell field names to DynamoDB attribute namesRBuilds polymorphic lens for main table and indexes for table fields starting with '_'Simple table configurationZTranslates haskell field names to database attribute names. Strips everything up to first '_'.<Create instances, datatypes for table, fields and instances.Example of what gets created: data Test { first :: Text, second :: Text, third :: Int } data TestIndex { third :: Int, second :: T.Text} mkTableDefs (tableConfig (''Test, WithRange) [(''TestIndex, NoRange)] []) deriveGenericOnly ''Test instance DynamoCollection Test WithRange IsTable ... instance DynamoTable Test WithRange tableName _ = "Test" deriveGenericOnly ''TestIndex instance DynamoCollection TestIndex NoRange IsIndex ... instance DynamoIndex TestIndex Test NoRange IsIndex indexName _ = "TestIndex" data P_First instance ColumnInfo P_First where columnName _ = "first" instance InCollection P_First Test 'NestedPath -- For every attribute instance InCollection P_Second TestIndex 'FullPath -- For every non-primary attribute first' :: Column Text TypColumn P_First first' = ColumnH#Generate basic collection instancesIBBuild P_Column data, add it to instances and make column' variableDerive  4 and prepare column instances for nested structures.Derive just the  : instance for structures that were already derived using 8 and you want to use them as nested structures as well.Creates: :instance DynamoEncodable Type where dEncode val = Just (attributeValue & avM .~ gdEncodeG [fieldnames] val) dDecode (Just attr) = gdDecodeG [fieldnames] (attr ^. avM) dDecode Nothing = Nothing instance InCollection column_type P_Column1 'NestedPath instance InCollection column_type P_Column2 'NestedPath ...J_Creates top-leval variable as a call to a migration function with partially applied createIndex!Table type name, primary key type.Global secondary index records, index key typeLocal secondary index recordsName of the migration functionKHLMINJjkljkl KHLMINJNone $%&,:QRT\O7Retry batch operation, until unprocessedItems is empty.TTODO: we should use exponential backoff; currently we use a simple 1-sec threadDelayP7Retry batch operation, until unprocessedItems is empty.TTODO: we should use exponential backoff; currently we use a simple 1-sec threadDelayQ-Chunk list according to batch operation limitBatch write into the database.The batch is divided to 25-item chunks, each is sent and retried separately. If a batch fails on dynamodb exception, it is raised.ONote: On exception, the information about which items were saved is unavailableGet batch of items.Batch version of deleteItemByKey.|Note: Because the requests are chunked, the information about which items were deleted in case of exception is unavailable.OPQROPQR BSD-stylepalkovsky.ondrej@gmail.com experimentalportableNone ,:DQRT\ _Write item into the database; overwrite any previously existing item with the same primary key.>Write item into the database only if it doesn't already exist.kRead item from the database; primary key is either a hash key or (hash,range) tuple depending on the table.<Delete item from the database by specifying the primary key.Delete item from the database by specifying the primary key and a condition. Throws AWS exception if the condition does not succeed.SGenerate update item object; automatically adds condition for existence of primary key, so that only existing objects are modifiedUpdate item in a table =updateItem (Proxy :: Proxy Test) (12, "2") [colCount +=. 100]3Update item in a table while specifying a conditionDelete table from DynamoDB.YExtract primary key from a record in a form that can be directly used by other functions.You can use this on both main table or on index tables if they contain the primary key from the main table. Table key is always projected to indexes anyway, so just define it in every index. TUS0<=>?@ADEFGmnopqrstuvwxyz{|}~0?@A<=>DEFGmvoupqrtszxywn|{}~ TUSV !"#$%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw x y z { | } ~    RV                                          ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; { < = > ? @ A | B C D E F F 8 G H I J K LMNOPQRSTUVWXYZ[.dynamodb-simple-0.2.0.0-FDrC2BbPiBqDmouvqnH0M7Database.DynamoDB.TypesDatabase.DynamoDBDatabase.DynamoDB.FilterDatabase.DynamoDB.UpdateDatabase.DynamoDB.THqueryDatabase.DynamoDB.THLensDatabase.DynamoDB.InternalupdateItemByKeyDatabase.DynamoDB.ClassDatabase.DynamoDB.MigrationDatabase.DynamoDB.QueryRequestDatabase.DynamoDB.THContainsDatabase.DynamoDB.BatchRequest RangeOper RangeEquals RangeLessThanRangeLessThanERangeGreaterThanRangeGreaterThanE RangeBetweenRangeBeginsWithIsTexttoTextfromTextIsNumberDynamoEncodabledEncodedDecode dIsMissing DynamoScalar scalarEncode scalarDecode ScalarValueScSScNScBDynamoExceptiondType dScalarEncode$fIsTextTagged $fIsTextText$fIsNumberTagged$fIsNumberInteger$fIsNumberDouble $fIsNumberInt$fDynamoEncodableValue$fDynamoEncodableTagged$fDynamoEncodable[]$fDynamoEncodableHashMap$fDynamoEncodableSet$fDynamoEncodableMaybe$fDynamoEncodableByteString$fDynamoEncodableText$fDynamoEncodableBool$fDynamoEncodableDouble$fDynamoEncodableWord$fDynamoEncodableInt$fDynamoEncodableInteger$fDynamoEncodableScientific$fDynamoScalarBByteString$fDynamoScalarSText$fDynamoScalarNDouble$fDynamoScalarNScientific$fDynamoScalarvTagged$fDynamoScalarNWord$fDynamoScalarNInt$fDynamoScalarNInteger $fScalarAutoB $fScalarAutoN $fScalarAutoS$fExceptionDynamoException$fShowDynamoException DirectionForwardBackward Consistency EventuallyStronglyFilterConditionNotColumn<.>Action dumpActions+=.-=.=. setIfNothingappendprependadddelete delListItem delHashKey$fActionClassRemove$fActionClassDelete$fActionClassAdd$fActionClassSet$fSemigroupAction$fMonoidActionbetweenvalIn attrExists attrMissing beginsWithcontains setContainssize&&.||.==./=.<=.<.>.>=. RangeTypeNoRange WithRange QueryOptsScanOptsqConsistentRead qDirectionqFilterConditionqHashKeyqLimitqRangeCondition qStartKey queryOpts querySource querySimple queryCondsConsistentReadsFilterConditionsLimit sParallel sStartKeyscanOpts scanSourcescanscanCond TableConfig tableSetup globalIndexes localIndexestranslateField buildLens tableConfigdefaultTranslate mkTableDefsderiveCollectionderiveEncodable putItemBatch getItemBatchdeleteItemBatchByKeyputItem insertItemgetItemdeleteItemByKeydeleteItemCondByKeyupdateItemByKey_updateItemCond_ deleteTabletableKey2unordered-containers-0.2.7.1-5INwdG7O5Jdakf1CqKoOBData.HashMap.BaseHashMapbaseGHC.BaseNothingMaybe ScalarAutodTypeV dSetEncodeV dSetDecodeV dSetEncode dSetDecodecreatePolyLenses getFieldNameswhenJustsayUnMaybe ColumnInfo InCollection IntraColNamemkColumn dumpCondition consistencyLAndOr Comparison AttrExists AttrMissing BeginsWithContainsBetweenInNameGen columnNamePathType NestedPathFullPath IntraName IntraIndexSize ColumnType TypColumnTypSizenameGen nameGenPathrangeKey rangeStartrangeEnd rangeOper rangeData$fSemigroupFilterCondition ActionClass dumpActionasActionRemoveDeleteAddSet ActionValueValAttr IfNotExists ListAppend ListPrependPlusMinus isNoopAction supplyName supplyValue mkActionValdcomp dTableKey DynamoIndex PrimaryKey qsTableName TableQuery qTableName dQueryKey TableCreate DynamoTable tableNamedPutItemDynamoCollection TableType gdFirstField gdTwoFields gsDecodeGContainsTableKey IndexCreatecreateGlobalIndex indexName TableScan qsIndexNamedScan qIndexName createTable HasPrimaryKey dItemToKey dKeyToAttr dAttrToKey allFieldNames primaryFieldsIsTableIsIndexgsEncode gsEncodeGgsDecodedefaultPutItemdefaultCreateTabledefaultCreateTableRangedefaultQueryKeydefaultCreateGlobalIndex mkIndexHelperdefaultCreateGlobalIndexRangecreateLocalIndex defaultScan$fIndexCreateapWithRange$fIndexCreateapNoRange$fTableScanarIsIndex$fTableScanarIsTable$fTableQueryaIsIndex$fTableQueryaIsTable$fTableCreateaWithRange$fTableCreateaNoRange$fHasPrimaryKeyaWithRanget$fHasPrimaryKeyaNoRangetwaitUntilTableActive deleteIndices createIndicesfindInconsistentIdxesfindInconsistentLocIdxescompareIndexes changeStream tryMigrationgetTableDescriptioncompareLocalIndexeslogmsgprettyTableInfocreateOrMigrate runMigration_qLimit _qStartKeyrsDecode _sParallel FixedQueryqueryCmd boundedFetchscanCmd _qHashKey_qRangeCondition_qFilterCondition_qConsistentRead _qDirection rsDecoder_sFilterCondition_sConsistentRead_sLimit _sStartKey FixedScan unfoldLimit$fAWSPagerFixedScan$fAWSRequestFixedScan$fAWSPagerFixedQuery$fAWSRequestFixedQuerycreateContainsTableKeygenBaseCollection buildColDatamkMigrationFuncpkeySize toConstrName mkConstrNamesderiveEncodable'retryWriteBatchretryReadBatch chunkBatchdDeleteRequest dUpdateItem dDeleteItemdGetItem