The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

MongoDBx::Tiny::Attributes - offering field attributes

SYNOPSIS

  package My::Data::Foo;

  use MongoDBx::Tiny::Document;

  COLLECTION_NAME 'foo';

  ESSENTIAL q/code/;
  FIELD 'code', INT, LENGTH(10), DEFAULT('0'), REQUIRED;
  FIELD 'name', STR, LENGTH(30), DEFAULT('noname');

  # you can also define customized one.
  
  FIELD 'some', &SOME_ATTRIBUTE;
  sub SOME_ATTRIBUTE {
        name     => 'SOME_ATTRIBUTE',
        callback => sub {
            my $target = shift;
            return MongoDBx::Tiny::Attributes::OK;
        },
  }

callback arguments

  callback = sub {
       my $target = shift;
       my $tiny   = shift;
       my $opt    = shift; # state => 'insert|update'
       return FAIL, { message => 'error' };
       return OK,   { target => $target  }; # override target if you want
  }

ATTRIBUTES

LENGTH

  LENGTH(255)

INT

UINT

HEX

STR

ENUM

  ENUM('on','off')

REF

HASH

ARRAY

DATETIME

TIMESTAMP

REGEX

  REGEX('\d+')

NOT_NULL

OID

DEFAULT

  DEFAULT("foo")
  DEFAULT([])

REQUIRED

NOW

DEFAULT(NOW('Asia/Tokyo')

READ_ONLY

AUTHOR

Naoto ISHIKAWA, <toona at seesaa.co.jp>

Kouji Tominaga, <tominaga at seesaa.co.jp>

LICENSE AND COPYRIGHT

Copyright 2013 Naoto ISHIKAWA.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.