From 433843fd6198521a13006dcef4bfc927ccbd455e Mon Sep 17 00:00:00 2001 From: hylom Date: Thu, 27 Apr 2017 19:42:51 +0900 Subject: [PATCH] Model::Stories: add update() --- src/newslash_web/lib/Newslash/Model/Stories.pm | 36 ++++++++++++++++++++++++-- src/newslash_web/t/models/stories.t | 9 +++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/newslash_web/lib/Newslash/Model/Stories.pm b/src/newslash_web/lib/Newslash/Model/Stories.pm index 3c6c1819..0d43051a 100644 --- a/src/newslash_web/lib/Newslash/Model/Stories.pm +++ b/src/newslash_web/lib/Newslash/Model/Stories.pm @@ -293,6 +293,25 @@ EOSQL return $rs; } +=head2 update + +this implementation uses old slash's updateStory($sid, $data), +$sid is takable sid or stoid. + +=cut + +sub update { + my ($self, $params, $user, $extra_params, $opts) = @_; + $opts ||= {}; + $opts->{update} = 1; + if (!$params->{stoid}) { + $self->set_error("stoid not given"); + return; + } + return $self->create($params, $user, $extra_params, $opts); +} + + =head2 create(\%params, $uid) create a story. @@ -327,6 +346,7 @@ stoid sub create { my ($self, $params, $user, $extra_params, $opts) = @_; return if $self->check_readonly; + $opts ||= {}; # check parameters my $msg = ""; @@ -368,7 +388,18 @@ sub create { my $topics_chosen = $params->{topics_chosen}; my $slash_db = Newslash::Model::SlashDB->new($self->{options}); - my ($sid, $stoid) = $slash_db->createStory($params); + my ($sid, $stoid); + if ($opts->{update}) { + my $rs = $slash_db->updateStory($params->{stoid}, $params); + if (!$rs) { + return; + } + $sid = $params->{sid}; + $stoid = $params->{stoid}; + } + else { + ($sid, $stoid) = $slash_db->createStory($params); + } my $globjs = $self->new_instance_of("Newslash::Model::Globjs"); my $globj_id = $globjs->getGlobjidFromTargetIfExists("stories", $params->{stoid}); @@ -382,7 +413,7 @@ sub create { globj_id => $globj_id, private => 0, ); - warn "set_tag fault..." if !$ret + #warn "set_tag fault..." if !$ret } } #return $sid; @@ -612,6 +643,7 @@ sub _generalize { } $story->{time_string} = format_datetime($story->{time}); + $story->{createtime} = $story->{time}; $story->{discussion_id} = $story->{discussion}; } diff --git a/src/newslash_web/t/models/stories.t b/src/newslash_web/t/models/stories.t index 12381d4e..ced1e43e 100644 --- a/src/newslash_web/t/models/stories.t +++ b/src/newslash_web/t/models/stories.t @@ -40,9 +40,18 @@ subtest 'create/select/update stories' => sub { }; my $stoid = $stories->create($params, $admin); ok($stoid, "create story"); + #diag(Dumper($params)); + + my $new_text = "

foo bar hoge hoge

"; + $params->{introtext} = $new_text; + $params->{topics_chosen} = {49 => 10, 2271 => 20}; + my $rs = $stories->update($params, $admin); + ok($rs, "update story"); + diag $stories->last_error if !$rs; my $story = $stories->select(stoid => $stoid); ok($story, "select story by stoid"); + is($story->{introtext}, $new_text, "update story correctly"); ok($stories->hard_delete(stoid => $stoid), "delete story"); -- 2.11.0