{"id":16671381,"url":"https://github.com/bluefeet/starch-store-paws-dynamodb","last_synced_at":"2026-05-20T11:38:01.273Z","repository":{"id":66888882,"uuid":"47793909","full_name":"bluefeet/Starch-Store-Paws-DynamoDB","owner":"bluefeet","description":"Starch storage backend using Paws::DynamoDB.","archived":false,"fork":false,"pushed_at":"2015-12-14T20:04:20.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-19T17:36:44.371Z","etag":null,"topics":["in-development","perl5"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bluefeet.png","metadata":{"files":{"readme":"README.pod","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-10T23:39:26.000Z","updated_at":"2019-03-05T23:04:55.000Z","dependencies_parsed_at":"2023-03-17T15:45:55.325Z","dependency_job_id":null,"html_url":"https://github.com/bluefeet/Starch-Store-Paws-DynamoDB","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FStarch-Store-Paws-DynamoDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FStarch-Store-Paws-DynamoDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FStarch-Store-Paws-DynamoDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluefeet%2FStarch-Store-Paws-DynamoDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluefeet","download_url":"https://codeload.github.com/bluefeet/Starch-Store-Paws-DynamoDB/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243318748,"owners_count":20272137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["in-development","perl5"],"created_at":"2024-10-12T11:44:17.146Z","updated_at":"2025-12-28T11:49:03.280Z","avatar_url":"https://github.com/bluefeet.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"=pod\n\n=head1 NAME\n\nStarch::Store::Paws::DynamoDB - Starch storage backend using Paws::DynamoDB.\n\n=head1 SYNOPSIS\n\n    my $starch = Starch-\u003enew(\n        store =\u003e {\n            class =\u003e '::Paws::DynamoDB',\n            region =\u003e 'us-west-2',\n        },\n    );\n\n=head1 DESCRIPTION\n\nThis L\u003cStarch\u003e store uses L\u003cPaws::DynamoDB\u003e to set and get state data.\n\nThis module is meant to be a more robust replacement for\nL\u003cStarch::Store::Amazon::DynamoDB\u003e for several reasons:\n\n=over\n\n=item *\n\nL\u003cAmazon::DynamoDB\u003e lacks many features and it does not appear like\nthis will change any time soon.\n\n=item *\n\nL\u003cPaws\u003e appears to be the king of AWS API in Perl, likely deprecating\nmany of the existing AWS modules on CPAN.\n\n=back\n\n=head1 WARNING\n\nL\u003cPaws\u003e is not yet stable as it is being actively developed and no promises\nare being made in regards to API stability or quality of the software.\n\nThus, this module also does not make any such promises.  Once Paws reaches\nversion 1 this will change.\n\n=head1 SERIALIZATION\n\nUnlike L\u003cStarch::Store::Amazon::DynamoDB\u003e this module does not jump through\na bunch of hoops to serialize only complex data structures, nor does it give\nyou the ability to choose a serializer.\n\nInstead all data is serialized with L\u003cJSON::MaybeXS\u003e.  This makes things a\nlot simpler for tools written in other languages, or even just for humans\nlooking at the raw records in DynamoDB.  It also simplifies the code.\n\n=head1 OPTIMIZATION\n\nYou should probably run the following code as early as possible:\n\n    use Paws;\n    Paws-\u003edefault_config-\u003eimmutable(1);\n\nThis will ensure that you get the most run-time performance, but with\na small compile-time slow down.  See more at L\u003cPaws/Optimization\u003e.\n\nThis module automatically preloads the C\u003cPutItem\u003e, C\u003cGetItem\u003e, and\nC\u003cDeleteItem\u003e methods of the L\u003cPaws::DynamoDB\u003e class.\n\n=head1 OPTIONAL ARGUMENTS\n\n=head2 region\n\nThis is the AWS region which will be used when building the L\u003c/paws\u003e\nobject.  If you specify your own L\u003c/paws\u003e object (or aguments) then\nthis will be ignored.  Defaults to C\u003cus-east-1\u003e.\n\n=head2 ddb\n\nThis must be set to either hash ref arguments for L\u003cPaws::DynamoDB\u003e\nor a pre-built object (often retrieved using a method proxy).\n\nWhen configuring Starch from static configuration files using a\nL\u003cmethod proxy|Starch/METHOD PROXIES\u003e\nis a good way to link your existing L\u003cPaws::DynamoDB\u003e object\nconstructor in with Starch so that starch doesn't build its own.\n\n=head2 paws\n\nThe L\u003cPaws\u003e object, which will be used to construct the L\u003c/ddb\u003e object.\n\nIf this is sepecified as a HashRef then a new L\u003cPaws\u003e object will be\ncreated with the HashRef used as the C\u003cconfig\u003e argumet.\n\nSee more at L\u003cPaws/CONFIGURATION\u003e.\n\n=head2 consistent_read\n\nWhen C\u003ctrue\u003e this sets the C\u003cConsistentRead\u003e flag when calling\nL\u003cGetItem\u003e on the L\u003c/ddb\u003e.  Defaults to C\u003ctrue\u003e.\n\n=head2 table\n\nThe DynamoDB table name where states are stored. Defaults to C\u003cstarch_states\u003e.\n\n=head2 key_field\n\nThe field in the L\u003c/table\u003e where the state ID is stored.\nDefaults to C\u003c__STARCH_KEY__\u003e.\n\n=head2 expiration_field\n\nThe field in the L\u003c/table\u003e which will hold the epoch\ntime when the state should be expired.  Defaults to C\u003c__STARCH_EXPIRATION__\u003e.\n\n=head2 connect_on_create\n\nBy default when this store is first created it will issue an L\u003c/get\u003e.\nThis initializes all the LWP and other code so that, in a forked\nenvironment (such as a web server) this initialization only happens\nonce, not on every child's first request.\n\nDefaults to C\u003c1\u003e (true).  Set this to false if you don't want this feature.\n\n=head1 METHODS\n\n=head2 create_table_args\n\nReturns the appropriate arguments to use for calling C\u003cCreateTable\u003e\non the L\u003c/ddb\u003e object.  By default it will look like this:\n\n    {\n        TableName =\u003e 'starch_states',\n        ProvisionedThroughput =\u003e {\n            ReadCapacityUnits  =\u003e 1,\n            WriteCapacityUnits =\u003e 1,\n        },\n        AttributeDefinitions =\u003e [{\n            AttributeName =\u003e $key_field,\n            AttributeType =\u003e 'S',\n        }],\n        KeySchema =\u003e [{\n            AttributeName =\u003e $key_field,\n            KeyType       =\u003e 'HASH',\n        }],\n    }\n\nAny arguments you pass will override those in the returned arguments,\nwhich means you could, for example, do something like this to override\nthe provisioned units:\n\n    my $args = $store-\u003ecreate_table_args(\n        ProvisionedThroughput =\u003e {\n            ReadCapacityUnits  =\u003e 100,\n            WriteCapacityUnits =\u003e 20,\n        },\n    );\n\n=head2 create_table\n\nCreates the L\u003c/table\u003e by passing any arguments to L\u003c/create_table_args\u003e\nand calling the C\u003cCreateTable\u003e method on the L\u003c/ddb\u003e object.\n\nThis method will not return until the new table is in an C\u003cACTIVE\u003e state.\n\nIf no exceptions are thrown a L\u003cPaws::DynamoDB::TableDescription\u003e object\nis returned.\n\n=head2 set\n\nSet L\u003cStarch::Store/set\u003e.\n\n=head2 get\n\nSet L\u003cStarch::Store/get\u003e.\n\n=head2 remove\n\nSet L\u003cStarch::Store/remove\u003e.\n\n=head1 SUPPORT\n\nPlease submit bugs and feature requests to the\nStarch-Store-Paws-DynamoDB GitHub issue tracker:\n\nL\u003chttps://github.com/bluefeet/Starch-Store-Paws-DynamoDB/issues\u003e\n\n=head1 AUTHOR\n\nAran Clary Deltac \u003cbluefeetE\u003c64\u003egmail.com\u003e\n\n=head1 ACKNOWLEDGEMENTS\n\nThanks to L\u003cZipRecruiter|https://www.ziprecruiter.com/\u003e\nfor encouraging their employees to contribute back to the open\nsource ecosystem.  Without their dedication to quality software\ndevelopment this distribution would not exist.\n\n=head1 LICENSE\n\nThis library is free software; you can redistribute it and/or modify\nit under the same terms as Perl itself.\n\n=cut\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluefeet%2Fstarch-store-paws-dynamodb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluefeet%2Fstarch-store-paws-dynamodb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluefeet%2Fstarch-store-paws-dynamodb/lists"}