# NAME Starch::Store::DBIx::Connector - Starch storage backend using DBIx::Connector. # SYNOPSIS my $starch = Starch->new( store => { class => '::DBIx::Connector', connector => [ $dsn, $username, $password, { RaiseError=>1, AutoCommit=>1 }, ], }, ); # DESCRIPTION This [Starch](https://metacpan.org/pod/Starch) store uses [DBIx::Connector](https://metacpan.org/pod/DBIx::Connector) to set and get state data. The table in your database should contain three columns. This is the SQLite syntax for creating a compatible table which you can modify to work for your particular database's syntax: CREATE TABLE starch_states ( key TEXT NOT NULL PRIMARY KEY, data TEXT NOT NULL, expiration INTEGER NOT NULL ) # REQUIRED ARGUMENTS ## connector This must be set to either an array ref arguments for [DBIx::Connector](https://metacpan.org/pod/DBIx::Connector) or a pre-built object (often retrieved using a method proxy). When configuring Starch from static configuration files using a [method proxy](https://metacpan.org/pod/Starch#METHOD-PROXIES) is a good way to link your existing [DBIx::Connector](https://metacpan.org/pod/DBIx::Connector) object constructor in with Starch so that starch doesn't build its own. # OPTIONAL ARGUMENTS ## serializer A [Data::Serializer::Raw](https://metacpan.org/pod/Data::Serializer::Raw) for serializing the state data for storage in the ["data\_column"](#data_column). Can be specified as string containing the serializer name, a hash ref of Data::Serializer::Raw arguments, or as a pre-created Data::Serializer::Raw object. Defaults to `JSON`. Consider using the `JSON` or `Sereal` serializers for speed. `Sereal` will likely be the fastest and produce the most compact data. ## method The [DBIx::Connector](https://metacpan.org/pod/DBIx::Connector) method to call when executing queries. Must be one of `run`, `txn`, or `svp`. Defaults to `run`. ## mode The [connection mode](https://metacpan.org/pod/DBIx::Connector#Connection-Modes) to use when running the ["method"](#method). Defaults to `undef` which lets [DBIx::Connector](https://metacpan.org/pod/DBIx::Connector) use whichever mode it has been configured to use. Must be on of `ping`, `fixup`, `no_ping`, or `undef`. Typically you will not want to set this as you will have provided a pre-built [DBIx::Connector](https://metacpan.org/pod/DBIx::Connector) object, using a method proxy, which you've already called ["mode" in DBIx::Connector](https://metacpan.org/pod/DBIx::Connector#mode) on. ## table The table name where states are stored in the database. Defaults to `starch_states`. ## key\_column The column in the ["table"](#table) where the state ID is stored. Defaults to `key`. ## data\_column The column in the ["table"](#table) which will hold the state data. Defaults to `data`. ## expiration\_column The column in the ["table"](#table) which will hold the epoch time when the state should be expired. Defaults to `expiration`. # ATTRIBUTES ## insert\_sql The SQL used to create state data. ## update\_sql The SQL used to update state data. ## exists\_sql The SQL used to confirm whether state data already exists. ## select\_sql The SQL used to retrieve state data. ## delete\_sql The SQL used to delete state data. # METHODS ## set Set ["set" in Starch::Store](https://metacpan.org/pod/Starch::Store#set). ## get Set ["get" in Starch::Store](https://metacpan.org/pod/Starch::Store#get). ## remove Set ["remove" in Starch::Store](https://metacpan.org/pod/Starch::Store#remove). # SUPPORT Please submit bugs and feature requests to the Starch-Store-DBIx-Connector GitHub issue tracker: [https://github.com/bluefeet/Starch-Store-DBIx-Connector/issues](https://github.com/bluefeet/Starch-Store-DBIx-Connector/issues) # AUTHORS Aran Clary Deltac # ACKNOWLEDGEMENTS Thanks to [ZipRecruiter](https://www.ziprecruiter.com/) for encouraging their employees to contribute back to the open source ecosystem. Without their dedication to quality software development this distribution would not exist. # LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.