package PGObject::Type::ByteString; use strict; use warnings; use 5.010; use Carp; use DBD::Pg qw(:pg_types); use Ref::Util qw(is_ref is_scalarref); =head1 NAME PGObject::Type::ByteString - Wrapper for raw strings mapping to BYTEA columns. =head1 VERSION Version 1.2.3 =cut our $VERSION = '1.2.3'; =head1 SYNOPSIS PGObject::Type::ByteString->register(); Now all BYTEA columns will be returned as ByteString objects. =head1 DESCRIPTION This module provides a basic wrapper around Perl strings, mapping them to BYTEA database columns. PGObject::Type::ByteString objects have no traditional properties, however dereferencing them will yield the raw string they contain. =head1 SUBROUTINES/METHODS =head2 register([registry => 'default',] [types => $types_arrayref]) By default registers type PG_BYTEA. =cut sub register { my $self = shift @_; croak "Can't pass reference to register \n". "Hint: use the class instead of the object" if ref $self; my %args = @_; my $registry = $args{registry}; $registry ||= 'default'; my $types = $args{types}; $types = [ DBD::Pg::PG_BYTEA, 'bytea' ] unless defined $types and @$types; for my $type (@$types){ if ($PGObject::VERSION =~ /^1\./){ my $ret = PGObject->register_type(registry => $registry, pg_type => $type, perl_class => $self); return $ret unless $ret; } else { PGObject::Type::Registry->register_type( registry => $registry, dbtype => $type, apptype => $self ); } } return 1; } =head2 new Instantiates and returns a new object, based on the supplied scalar string, or scalar string reference. Dereferencing the returned object will yield the original raw string. =cut sub new { my ($class, $value) = @_; my $self; croak 'Must pass scalar or scalar ref' if is_ref($value) && ! is_scalarref($value); if (is_ref($value)) { $self = $value; } else { $self = \$value; } return bless $self, $class; } =head2 from_db Returns a new PGObject::Type::ByteString object based on the supplied scalar string, or scalar string reference. =cut sub from_db { my ($class, $value) = @_; return $class->new($value); } =head2 to_db Returns the object's binary string value packaged as PG_BYTEA type/value hashref suitable for passing to DBD::Pg. =cut sub to_db { my ($self) = @_; # hashref with value and type allows us to tell DBD::Pg to bind to binary return { value => $$self, type => PG_BYTEA }; } =head1 AUTHOR Erik Huelsmann, C<< >> =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc PGObject::Type::ByteString You can also look for information at: =over 4 =item * RT: CPAN's request tracker (report bugs here) L =item * AnnoCPAN: Annotated CPAN documentation L =item * CPAN Ratings L =item * Search CPAN L =back =head1 ACKNOWLEDGEMENTS =head1 LICENSE AND COPYRIGHT Copyright 2016-2018 Erik Huelsmann This program is released under the following license: BSD =cut 1; # End of PGObject::Type::DateTime