@ -163,17 +163,29 @@ sub POST :Allow {
my ( $ self , $ c ) = @ _ ;
my ( $ self , $ c ) = @ _ ;
{
{
my $ resource = $ self - > get_valid_post_data (
my ( $ item , $ resource ) ;
c = > $ c ,
$ resource = $ self - > get_valid_post_data (
c = > $ c ,
media_type = > 'application/json' ,
media_type = > 'application/json' ,
) ;
) ;
last unless $ resource ;
last unless $ resource ;
my $ form = $ self - > get_form ( $ c ) ;
my $ form = $ self - > get_form ( $ c ) ;
my $ create = 1 ;
my $ create = 1 ;
my $ item = $ self - > update_item ( $ c , undef , undef , $ resource , $ form , $ create ) ;
my ( $ guard , $ txn_ok ) = ( $ c - > model ( 'DB' ) - > txn_scope_guard , 0 ) ;
{
$ self - > update_item ( $ c , undef , undef , $ resource , $ form , $ create ) ;
$ guard - > commit ;
$ txn_ok = 1 ;
}
last unless $ txn_ok ;
$ item = $ self - > fetch_item ( $ c , $ resource , $ form , $ item ) ;
last unless $ item ;
last unless $ item ;
$ c - > response - > status ( HTTP_CREATED ) ;
$ c - > response - > status ( HTTP_CREATED ) ;
$ c - > response - > header ( Location = > sprintf ( '/%s%d' , $ c - > request - > path , $ item - > id ) ) ;
$ c - > response - > header ( Location = > sprintf ( '/%s%d' , $ c - > request - > path , $ item - > id ) ) ;
$ c - > response - > body ( q( ) ) ;
$ c - > response - > body ( q( ) ) ;
@ -187,5 +199,6 @@ sub end : Private {
$ self - > log_response ( $ c ) ;
$ self - > log_response ( $ c ) ;
}
}
1 ;
# vim: set tabstop=4 expandtab:
# vim: set tabstop=4 expandtab: