úÎûÛéd±      !"#$%&'()*+,-./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. Also used by joins to weed out empty foreign keysXTypeclass 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.6€Don'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.7€Double as a primary key isn't generally a good thing as equality on double is sometimes a little dodgy. Use scientific instead.8Helper for tagged valuesI ´µ¶·¸¹ !"#$%&'()*+,-./0123456789:;<=>?@AB   4  ´µ¶·¸¹ !"#$%&'()*+,-./0123456789:;<=>?@ABNoneº>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 typeº¼½»º¼½»º¼½»None[¾JCreate function that converts complete structure from index back to table.iDynamoDB limits total number of attribute projections to 20, so this may not be as useful as it appears.¿¾¾¿¾ None%&,9:;<=DLRTÀ+Allow skipping over maybe types when using .DQuery directionG:Parameter for queries involving read consistency settings.JBFilter condition. Use with scan, query, update and delete methods.(Filtering on primary key is not allowed.KNegate conditionÁ:Class to get a column name from a Type specifying a columnÂ7Signifies that the column is present in the table/indexÃ?Internal representation of a part of path in a nested structureL-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 datatypeÅDReturn filter expression, attribute name map and attribute value mapÆLens to help set consistency.M*Combine attributes from nested structures. address' <.> street'N!Access an index in a nested list. users' <!> 0 <.> name'O!Access a key in a nested hashmap. !phones' <!:> "mobile" <.> number'0ÀDEFGHIJÇÈKÉÊËÌÍÎÏÐÁÑÂÒÓÔÃÕÖLרÙÚÛÄÜÝÅÞßàáâÆMNOã/ÀDEFGHIJÇÌÎÍKÏÉÈÊËÐÁÑÂÒÓÔÃÕÖLØ×ÙÚÛÄÜÝÅÞßàáâÆMNOÀDEFGHIJ ÇÈKÉÊËÌÍÎÏÐÁÑÂÒÓÔÃÕÖLרÙÚÛÄÜÝÅÞßàáâÆMNOãM7N8O8None,:I PAn action for   functions.QNGenerate an action expression and associated structures from a list of actionsR"Add a number to a saved attribute.S)Subtract a number from a saved attribute.T Set an attribute to a new value.U.Set on a Maybe type, if it was not set before.V'Append a new value to an end of a list.W'Insert a value to a beginning of a listXAdd a new value to a set.YRemove a value from a set.ZDelete n-th list of an item.[Delete a key from a map.'äåæçèéêëìíîPïðñòóôõö÷QøùúRSTUVWXYZ[\]^_ PQRSTUVWXYZ[ PRSTUVWXYZ[QäåæçèéêëìíîPïðñòóôõö÷QøùúRSTUVWXYZ[\]^_R4S4T4None %&,:T b Numeric/string range comparison.c6a IN (b, c, d); the list may contain up to 100 values.dCheck existence of attribute.e$Checks non-existence of an attributefComparison for text columns.g,CONTAINS condition for text-like attributes.hCONTAINS condition for sets.i/Size (i.e. number of bytes) of saved attribute.jAND for combining conditions.kOR for combining conditionslRTests for equality. Automatically adjusts query to account for missing attributes.:Note: checks against empty values esentially translate to e.m a /= b === Not (a == b)bcdefghiûjklmnopqJKbcdefghijklmnopqJKjklmqpnodefghcbibcdefghiûjklmnopqj3k3l4m4n4o4p4q4 None%&+,69:;<=?DLOQRTr>Class for indexes that contain primary key of the parent tableü3Extract table primary key from an item, if possibles+Class representing a Global Secondary Indexý Parameter type for queryKeyRangetIType family that returns a primary key of a table/index depending on the x parameter.u,Class for tables/indexes that can be scannedþ Return table name and index namev,Class for tables/indexes 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 createTablewDescritpion of dynamo table8Dynamo table/index name; default is the constructor name(Serialize data, put it into the databaseHReturn True if key is well-defined (i.e. no empty string, no Maybe etc.)jBasic instance for dynamo collection (table or index) This instances fixes the tableName and the sort key6Helper type to distinguish index and table collectionsx: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.>rü  s  ýtuþvÿwxyz  !"#$%&'()*+,-./0(rü  s  tuvÿwxyz %&&rü  s  ýtuþvÿwxyz  !"#$%&'()*+,-./0 None ,:DLQRT\15Periodically check state of table, until it is ACTIVE2*Delete specified indices from the database3'Update table with specified new indices4FCompare intersection of new and old indexes and find inconsistent ones5TVerbatim copy of findInconsistentIdxes, but changed to localSecondaryIndex structure6dCompare indexes and return list of indices to delete and to create; indices to recreate are included7$Change streaming settings on a table8Main table migration code9123456:78;<=>>9123456:78;<=> None? Create ContainsTableKey instance???None!"L{6Configuration 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 configurationƒZTranslates 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 { u_third :: Int, i_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' = Column -- Polymorphic lenses class Test_lens_first a b | a -> b where first :: Functor f => (a -> f b) -> a -> f b instance Test_lens_first TestIndex Text where first = ...@#Generate basic collection instancesABBuild P_Column data, add it to instances and make column' variable…Derive  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 ...B_Creates top-leval variable as a call to a migration function with partially applied createIndex{|}~€‚bPrefix for table and index names; dynamodb doesn't have namespaces, this is to remedy the problem.!Table type name, primary key type.Global secondary index records, index key typeLocal secondary index recordsƒ„Name of the migration functionC@DEA…†FBxyz{|}~€‚ƒ„…†„{|}~€‚ƒ…†xyz {|}~€‚ƒ„C@DEA…†FBNone $%&,:QRT\G7Retry batch operation, until unprocessedItems is empty.TTODO: we should use exponential backoff; currently we use a simple 1-sec threadDelayH7Retry batch operation, until unprocessedItems is empty.TTODO: we should use exponential backoff; currently we use a simple 1-sec threadDelayI-Chunk list according to batch operation limit‡Batch 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 unavailableˆGet 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.GHI‡ˆJ‰‡ˆ‰GHI‡ˆJ‰None%&,:DOQRT\ŠOptions for a generic query.KGThis sets the "D.qLimit" settings for maximum number of evaluated itemsLuKey after which the evaluation starts. When paging, this should be set to qrsLastEvaluatedKey of the last operation.M/Decode data, throw exception if decoding fails.‹@Record for defining scan command. Use lenses to set the content.+sParallel: (Segment number, Total segments)N(Segment number, TotalSegments)OWhen  1https://github.com/brendanhay/amazonka/issues/340 is fixed, remove“#Default settings for query options.P Generate a D.Query object”Same as •%, but return data in original chunks.•’Generic query function. You can query table or indexes that have a range key defined. The filter condition cannot access the hash and range keys.–KConduit to query global indexes with no range key; in case anyone needed it—gQuery an index, fetch primary key from the result and immediately read full items from the main table.PYou cannot perform strongly consistent reads on Global indexes; if you set the Œ to I†, fetch from global indexes is still done as eventually consistent. Queries on local indexes are performed according to the settings.˜/Perform a simple, eventually consistent, query.ESimple to use function to query limited amount of data from database.™Query with conditionš”Fetch 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 ’ to continue reading the query.Q-Generic query interface for scanning/queryingRXRun command as long as Maybe cmd is Just or the resulting sequence is smaller than limit¡-Conduit source for running scan; the same as ¢,, but return results in chunks as they come.¢"Conduit source for running a scan.£RFunction to call bounded scans. Tries to return exactly requested number of items.Use Ÿ to continue the scan.S Generate a D.Query object.¤*Scan table using a given filter condition. =scanCond (colAddress <!:> "Home" <.> colCity ==. "London") 10¥^Conduit to do a left join on the items being sent; supposed to be used with querySourceChunks.The 'foreign key' must have an T to facilitate faster searching.¦ The same as ¥9, but discard items that do not exist in the right table.9ŠUVWXYZKLM‹[\]^N_`aObŒŽ‘’“P”•c–—˜Proxy type of a table to queryHash keyRange conditionScan direction Maximum number of items to fetch™Hash keyRange conditionScan direction Maximum number of items to fetchš Maximum number of items to fetchQ Maximum number of items to fetchRdefg›œžŸ ¡¢£ Scan settingsRequired result countBlist of results, lastEvalutedKey or Nothing if end of data reachedS¤¥Proxy type for the right table¦Proxy type for the right tableŠ‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦)ŠUVWXYZKLM‹[\]^N_`aObŒŽ‘’“P”•c–—˜™šQRdefg›œžŸ ¡¢£S¤¥¦ 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.hƒGenerate update item object; automatically adds condition for existence of primary key, so that only existing objects are modified¬Update item in a table. =updateItem (Proxy :: Proxy Test) (12, "2") (colCount +=. 100)­AUpdate item in a database, return an updated version of the item.®4Update item in a table while specifying a condition.¯Delete a table from DynamoDB.°"Extract primary key from a record.À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. ij§¨©ª«h¬­®¯°<DEFGHILMNOrstuvw‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°<GHIDEFLMNO©ˆŠ“Œ’Ž‘š˜™•”–—‹ œ›žŸ£¢¡¤¥¦§‡¨­¬®ª«‰¯°wstrvu ij§¨©ª«h¬­®¯°k !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR S T U V W X Y Z [ \ ] ^_`abcdefghijklmnopqrstuvwxyz{|}~€  ‚ ƒ „ … † ‡ ˆ ‰ŠŠ‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹ º»¼½¾¿ÀÁÂÀÁÃÄÅÆÇÈÉÊËÌÍÎÏ Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ [ ç è é ê ë ì í î ï ð ñ òóôõöö÷÷øøùù_úûüýþÿ                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H IJKLMNOPQRSTUVWXYZ[\]^_`˜abcde™fghijjYklmnopqrs.dynamodb-simple-0.5.0.0-1lsziD1M7DMJWT0oBBfyBtDatabase.DynamoDB.TypesDatabase.DynamoDBDatabase.DynamoDB.FilterDatabase.DynamoDB.UpdateDatabase.DynamoDB.THqueryDatabase.DynamoDB.THLensDatabase.DynamoDB.THConvertDatabase.DynamoDB.InternalupdateItemByKeyDatabase.DynamoDB.ClassDatabase.DynamoDB.MigrationDatabase.DynamoDB.THContainsDatabase.DynamoDB.BatchRequestDatabase.DynamoDB.QueryRequest RangeOper RangeEquals RangeLessThanRangeLessThanERangeGreaterThanRangeGreaterThanE RangeBetweenRangeBeginsWithIsTexttoTextfromTextIsNumberDynamoEncodabledEncodedDecode dIsMissing DynamoScalar scalarEncode scalarDecode ScalarValueScSScNScBDynamoExceptiondType dScalarEncode$fIsTextTagged $fIsTextText$fIsNumberTagged$fIsNumberInteger$fIsNumberDouble $fIsNumberInt$fDynamoEncodableValue$fDynamoEncodableTagged$fDynamoEncodable[]$fDynamoEncodableHashMap$fDynamoEncodableSet$fDynamoEncodableMaybe$fDynamoScalarSUUID$fDynamoEncodableUUID$fDynamoEncodableByteString$fDynamoEncodableText$fDynamoEncodableBool$fDynamoEncodableDouble$fDynamoEncodableInt64$fDynamoEncodableInt32$fDynamoEncodableInt16$fDynamoEncodableWord$fDynamoEncodableInt$fDynamoEncodableInteger$fDynamoEncodableScientific$fDynamoScalarBByteString$fDynamoScalarSText$fDynamoScalarNDouble$fDynamoScalarNScientific$fDynamoScalarvTagged$fDynamoScalarNWord$fDynamoScalarNInt64$fDynamoScalarNInt32$fDynamoScalarNInt16$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&&.||.==./=.<=.<.>.>=.ContainsTableKey DynamoIndex PrimaryKey TableScanCanQuery DynamoTable RangeTypeNoRange WithRange TableConfig tableSetup globalIndexes localIndexestranslateField buildLens tableConfigdefaultTranslate mkTableDefsderiveCollectionderiveEncodable putItemBatch getItemBatchdeleteItemBatchByKey QueryOptsScanOptsqConsistentRead qDirectionqFilterConditionqHashKeyqLimitqRangeCondition qStartKey queryOptsquerySourceChunks querySourcequerySourceByKeyqueryOverIndex querySimple queryCondsConsistentReadsFilterConditionsLimit sParallel sStartKeyscanOptsscanSourceChunks scanSourcescanscanCondleftJoin innerJoinputItem insertItemgetItemdeleteItemByKeydeleteItemCondByKeyupdateItemByKey_updateItemCond_ deleteTabletableKey3unordered-containers-0.2.8.0-9vyhLlLaqmyDfOnbawvdcQData.HashMap.BaseHashMapbaseGHC.BaseNothingMaybe ScalarAutodTypeV dSetEncodeV dSetDecodeV dSetEncode dSetDecodecreatePolyLenses getFieldNameswhenJustsaycreateTableConversionsgetConstructorUnMaybe 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 PrimaryKey' qsTableName qTableName dQueryKey TableCreate tableNamedPutItem dKeyIsDefinedDynamoCollection TableType gdFirstField gdTwoFields gsDecodeG IndexCreatecreateGlobalIndex indexName indexIsLocal qsIndexName qIndexNamedQueryKeyToAttr createTable HasPrimaryKey dItemToKey dKeyToAttr dAttrToKey allFieldNames primaryFields dGsDecodeIsTableIsIndexgsEncode gsEncodeGgsDecodedefaultPutItemdefaultCreateTabledefaultCreateTableRangedefaultQueryKeydefaultCreateGlobalIndex mkIndexHelperdefaultCreateGlobalIndexRangecreateLocalIndex defaultScan$fIndexCreateapWithRange$fIndexCreateapNoRange$fTableScanarIsIndex$fTableScanarIsTable$fCanQueryaIsIndexhashrange$fCanQueryaIsTablehashrange$fTableCreateaWithRange$fTableCreateaNoRange$fHasPrimaryKeyaWithRanget$fHasPrimaryKeyaNoRangetwaitUntilTableActive deleteIndices createIndicesfindInconsistentIdxesfindInconsistentLocIdxescompareIndexes changeStream tryMigrationgetTableDescriptioncompareLocalIndexeslogmsgprettyTableInfocreateOrMigrate runMigrationcreateContainsTableKeygenBaseCollection buildColDatamkMigrationFuncpkeySize toConstrName mkConstrNamesderiveEncodable'retryWriteBatchretryReadBatch chunkBatchdDeleteRequest_qLimit _qStartKey rsDecoder _sParallel FixedQueryqueryCmd boundedFetch unfoldLimitscanCmdghc-prim GHC.ClassesOrd _qHashKey_qRangeCondition_qFilterCondition_qConsistentRead _qDirection_sFilterCondition_sConsistentRead_sLimit _sStartKey FixedScanquerySourceChunksByKey$fAWSPagerFixedScan$fAWSRequestFixedScan$fAWSPagerFixedQuery$fAWSRequestFixedQuery dUpdateItem dDeleteItemdGetItem