NAME
   Dancer::Session::DBIC - DBIx::Class session engine for Dancer

VERSION
   0.004

DESCRIPTION
   This module implements a session engine for Dancer by serializing the
   session, and storing it in a database via DBIx::Class. The default
   serialization method is JSON, though one can specify any serialization
   format you want. YAML and Storable are viable alternatives.

   JSON was chosen as the default serialization format, as it is fast,
   terse, and portable.

SYNOPSIS
   Example configuration:

       session: "DBIC"
       session_options:
         dsn:      "DBI:mysql:database=testing;host=127.0.0.1;port=3306" # DBI Data Source Name
         schema_class:    "Interchange6::Schema"  # DBIx::Class schema
         user:     "user"      # Username used to connect to the database
         pass: "password"  # Password to connect to the database
         resultset: "MySession" # DBIx::Class resultset, defaults to Session
         id_column: "my_session_id" # defaults to sessions_id
         data_column: "my_session_data" # defaults to session_data

   In conjunction with Dancer::Plugin::DBIC, you can simply use the schema
   object provided by this plugin in your application:

       set session_options => {schema => schema};

   Custom serializer / deserializer can be specified as follows:

       set 'session_options' => {
           schema       => schema,
           serializer   => sub { YAML::Dump(@_); },
           deserializer => sub { YAML::Load(@_); },
       };

SESSION EXPIRATION
   A timestamp field that updates when a session is updated is recommended,
   so you can expire sessions server-side as well as client-side.

   This session engine will not automagically remove expired sessions on
   the server, but with a timestamp field as above, you should be able to
   to do this manually.

METHODS
 create()
   Creates a new session. Returns the session object.

 flush()
   Write the session to the database. Returns the session object.

 retrieve($id)
   Look for a session with the given id.

   Returns the session object if found, `undef' if not. Logs a debug-level
   warning if the session was found, but could not be deserialized.

 destroy()
   Remove the current session object from the database.

SEE ALSO
   Dancer, Dancer::Session

AUTHOR
   Stefan Hornburg (Racke) <[email protected]>

ACKNOWLEDGEMENTS
   Based on code from Dancer::Session::DBI written by James Aitken and code
   from Dancer::Plugin::DBIC written by Naveed Massjouni.

COPYRIGHT AND LICENSE
   This software is copyright (c) Stefan Hornburg.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.