Update StatusEntityLexer

This commit is contained in:
Daniel Supernault 2018-07-23 12:53:33 -06:00
parent 057a652c50
commit 77cd0f92c5
1 changed files with 24 additions and 22 deletions

View File

@ -2,7 +2,7 @@
namespace App\Jobs\StatusPipeline; namespace App\Jobs\StatusPipeline;
use Cache; use DB, Cache;
use App\{ use App\{
Hashtag, Hashtag,
Media, Media,
@ -68,12 +68,14 @@ class StatusEntityLexer implements ShouldQueue
public function storeEntities() public function storeEntities()
{ {
$status = $this->status;
$this->storeHashtags(); $this->storeHashtags();
$this->storeMentions(); $this->storeMentions();
$status->rendered = $this->autolink; DB::transaction(function () {
$status->entities = json_encode($this->entities); $status = $this->status;
$status->save(); $status->rendered = $this->autolink;
$status->entities = json_encode($this->entities);
$status->save();
});
} }
public function storeHashtags() public function storeHashtags()
@ -82,17 +84,15 @@ class StatusEntityLexer implements ShouldQueue
$status = $this->status; $status = $this->status;
foreach($tags as $tag) { foreach($tags as $tag) {
$slug = str_slug($tag); DB::transaction(function () use ($status, $tag) {
$slug = str_slug($tag);
$htag = Hashtag::firstOrCreate( $hashtag = Hashtag::firstOrCreate(
['name' => $tag], ['name' => $tag, 'slug' => $slug]
['slug' => $slug] );
); StatusHashtag::firstOrCreate(
['status_id' => $status->id, 'hashtag_id' => $hashtag->id]
StatusHashtag::firstOrCreate( );
['status_id' => $status->id], });
['hashtag_id' => $htag->id]
);
} }
} }
@ -102,16 +102,18 @@ class StatusEntityLexer implements ShouldQueue
$status = $this->status; $status = $this->status;
foreach($mentions as $mention) { foreach($mentions as $mention) {
$mentioned = Profile::whereUsername($mention)->first(); $mentioned = Profile::whereUsername($mention)->firstOrFail();
if(empty($mentioned) || !isset($mentioned->id)) { if(empty($mentioned) || !isset($mentioned->id)) {
continue; continue;
} }
$m = new Mention; DB::transaction(function () use ($status, $mentioned) {
$m->status_id = $status->id; $m = new Mention;
$m->profile_id = $mentioned->id; $m->status_id = $status->id;
$m->save(); $m->profile_id = $mentioned->id;
$m->save();
});
MentionPipeline::dispatch($status, $m); MentionPipeline::dispatch($status, $m);
} }