.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "DBIx::Class::InflateColumn::Serializer 3pm" .TH DBIx::Class::InflateColumn::Serializer 3pm "2022-06-13" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DBIx::Class::InflateColumn::Serializer \- Inflators to serialize data structures for DBIx::Class .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& package MySchema::Table; \& use base \*(AqDBIx::Class\*(Aq; \& \& _\|_PACKAGE_\|_\->load_components(\*(AqInflateColumn::Serializer\*(Aq, \*(AqCore\*(Aq); \& _\|_PACKAGE_\|_\->add_columns( \& \*(Aqdata_column\*(Aq => { \& \*(Aqdata_type\*(Aq => \*(AqVARCHAR\*(Aq, \& \*(Aqsize\*(Aq => 255, \& \*(Aqserializer_class\*(Aq => \*(AqJSON\*(Aq \& } \& ); .Ve .PP Then in your code... .PP .Vb 3 \& my $struct = { \*(AqI\*(Aq => { \*(Aqam\*(Aq => \*(Aqa struct\*(Aq }; \& $obj\->data_column($struct); \& $obj\->update; .Ve .PP And you can recover your data structure with: .PP .Vb 2 \& my $obj = ...\->find(...); \& my $struct = $obj\->data_column; .Ve .PP The data structures you assign to \*(L"data_column\*(R" will be saved in the database in \s-1JSON\s0 format. .SH "DESCRIPTION" .IX Header "DESCRIPTION" These modules help you store and access serialized data structures in the columns of your \s-1DB\s0 from your DBIx::Classes. They are inspired from the DBIx::Class::Manual::FAQ and the \s-1DBIC\s0 test suite, and provide a bit more protection than the inflators proposed in the \s-1FAQ.\s0 The intention is to provide a suite of well proven and reusable inflators and deflators to complement DBIx::Class. .PP Added features for these inflators are: \- throw an exception if the serialization doesn't fit in the field \- throw an exception if the deserialization results in an error .PP Right now there are three serializers: \- Storable \- \s-1JSON\s0 \- \s-1YAML\s0 .SH "USAGE" .IX Header "USAGE" 1. Choose your serializer: \s-1JSON, YAML\s0 or Storable .PP 2. Add 'InflateColumn::Serializer' into the load_components of your table class .PP 3. add 'serializer_class' => \s-1SERIALIZER\s0 to the properties of the column that you want to (de/i)nflate with the \s-1SERIALIZER\s0 class. .SH "NOTES" .IX Header "NOTES" As stated in the \s-1DBIC FAQ:\s0 \*(L"Be careful not to overuse this capability, however. If you find yourself depending more and more on some data within the inflated column, then it may be time to factor that data out.\*(R" .SH "AUTHOR" .IX Header "AUTHOR" .Vb 5 \& Jose Luis Martinez \& CPAN ID: JLMARTIN \& CAPSiDE \& jlmartinez@capside.com \& http://www.pplusdomain.net .Ve .SH "COPYRIGHT" .IX Header "COPYRIGHT" This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .PP The full text of the license can be found in the \&\s-1LICENSE\s0 file included with this module. .SH "THANKS" .IX Header "THANKS" Matt S Trout for his valuable feedback .PP Ask Bjorn Hansen .PP Karen Etheridge .SH "SEE ALSO" .IX Header "SEE ALSO" DBIx::Class, DBIx::Class::Manual::FAQ