NAME

MongoDBx::Tiny::Attributes - offering field attributes

SYNOPSIS

  package My::Data::Foo;

  use MongoDBx::Tiny::Document;

  COLLECTION_NAME 'foo';

  ESSENTIAL qw/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.