Pārlūkot izejas kodu

Add StatusView model to store views for discover algorithm

Daniel Supernault 4 gadi atpakaļ
vecāks
revīzija
7a68ee948a

+ 9 - 0
app/Http/Controllers/StatusController.php

@@ -10,6 +10,7 @@ use App\AccountInterstitial;
 use App\Media;
 use App\Profile;
 use App\Status;
+use App\StatusView;
 use App\Transformer\ActivityPub\StatusTransformer;
 use App\Transformer\ActivityPub\Verb\Note;
 use App\User;
@@ -59,6 +60,14 @@ class StatusController extends Controller
             }
         }
 
+        if($request->user() && $request->user()->profile_id != $status->profile_id) {
+            StatusView::firstOrCreate([
+                'status_id' => $status->id,
+                'status_profile_id' => $status->profile_id,
+                'profile_id' => $request->user()->profile_id
+            ]);
+        }
+
         if ($request->wantsJson() && config('federation.activitypub.enabled')) {
             return $this->showActivityPub($request, $status);
         }

+ 17 - 0
app/StatusView.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class StatusView extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+    	'status_id',
+    	'status_profile_id',
+    	'profile_id'
+    ];
+}

+ 35 - 0
database/migrations/2020_12_24_063410_create_status_views_table.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStatusViewsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('status_views', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->bigInteger('status_id')->unsigned()->nullable()->index();
+            $table->bigInteger('status_profile_id')->unsigned()->nullable()->index();
+            $table->bigInteger('profile_id')->unsigned()->nullable()->index();
+            $table->unique(['status_id', 'profile_id']);
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('status_views');
+    }
+}