From baea01e8b5ebe6cd2d01a5cbad3664d030c4347d Mon Sep 17 00:00:00 2001 From: Finn Date: Mon, 24 Jul 2017 14:55:05 +0100 Subject: [PATCH] Schema and actual DB submit code added --- lib/Pear/LocalLoop/Controller/Api/Feedback.pm | 18 +++++- lib/Pear/LocalLoop/Schema/Result/Feedback.pm | 57 +++++++++++++++++++ lib/Pear/LocalLoop/Schema/Result/User.pm | 7 +++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 lib/Pear/LocalLoop/Schema/Result/Feedback.pm diff --git a/lib/Pear/LocalLoop/Controller/Api/Feedback.pm b/lib/Pear/LocalLoop/Controller/Api/Feedback.pm index 8895ace..34f1bf2 100644 --- a/lib/Pear/LocalLoop/Controller/Api/Feedback.pm +++ b/lib/Pear/LocalLoop/Controller/Api/Feedback.pm @@ -7,6 +7,9 @@ has error_messages => sub { required => { message => 'Email is required', status => 400 }, in_resultset => { message => 'Change meeee', status => 400 }, }, + feedbacktext => { + required => { message => 'Feedback is required', status => 400 }, + }, app_name => { required => { message => 'App Name is required', status => 400 }, }, @@ -30,7 +33,8 @@ sub post_feedback { my $user_rs = $c->schema->resultset('User'); - $validation->required('email')->in_reusltset( 'email', $user_rs ); + $validation->required('email')->in_resultset( 'email', $user_rs ); + $validation->required('feedbacktext'); $validation->required('app_name'); $validation->required('package_name'); $validation->required('version_code'); @@ -38,6 +42,18 @@ sub post_feedback { return $c->api_validation_error if $validation->has_error; + my $user = $user_rs->find({'email' => $validation->param('email')}); + + $c->schema->resultset('Feedback')->create({ + email => $validation->param('email'), + user => $user, + feedbacktext => $validation->param('feedbacktext'), + app_name => $validation->param('app_name'), + package_name => $validation->param('package_name'), + version_code => $validation->param('version_code'), + version_number => $validation->param('version_number'), + }); + return $c->render( json => { success => Mojo::JSON->true, message => 'Thank you for your Feedback!', diff --git a/lib/Pear/LocalLoop/Schema/Result/Feedback.pm b/lib/Pear/LocalLoop/Schema/Result/Feedback.pm new file mode 100644 index 0000000..60deba9 --- /dev/null +++ b/lib/Pear/LocalLoop/Schema/Result/Feedback.pm @@ -0,0 +1,57 @@ +package Pear::LocalLoop::Schema::Result::Feedback; + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->table("feedback"); + +__PACKAGE__->add_columns( + "id", + { data_type => "integer", is_auto_increment => 1, is_nullable => 0 }, + "email" => { + data_type => "text", + is_nullable => 0, + }, + "user_id" => { + data_type => "integer", + is_foreign_key => 1, + is_nullable => 0, + }, + "feedbacktext" => { + data_type => "text", + is_nullable => 0, + }, + "app_name" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "package_name" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "version_code" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, + "version_number" => { + data_type => "varchar", + size => 255, + is_nullable => 0, + }, +); + +__PACKAGE__->set_primary_key("id"); + +_PACKAGE__->belongs_to( + "user", + "Pear::LocalLoop::Schema::Result::User", + { id => "user_id" }, + { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" }, +); + +1; diff --git a/lib/Pear/LocalLoop/Schema/Result/User.pm b/lib/Pear/LocalLoop/Schema/Result/User.pm index 259a03b..151075d 100644 --- a/lib/Pear/LocalLoop/Schema/Result/User.pm +++ b/lib/Pear/LocalLoop/Schema/Result/User.pm @@ -120,6 +120,13 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); +__PACKAGE__->has_many( + "feedback", + "Pear::LocalLoop::Schema::Result::Feedback", + { "foreign.user_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + sub generate_session { my $self = shift;