Browse Source

library list

moell 10 months ago
parent
commit
3afbd6bab6
2 changed files with 31 additions and 3 deletions
  1. 15 2
      app/Http/Controllers/API/LibraryController.php
  2. 16 1
      app/ModelFilters/LibraryFilter.php

+ 15 - 2
app/Http/Controllers/API/LibraryController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\API;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\API\Library\CreateOrUpdateRequest;
 use App\Http\Resources\API\LibraryResource;
+use App\Models\Container;
 use App\Models\Enums\LibraryType;
 use App\Models\Library;
 use Illuminate\Http\Request;
@@ -15,9 +16,21 @@ class LibraryController extends Controller
     /**
      * Display a listing of the resource.
      */
-    public function index()
+    public function index(Request $request)
     {
-        //
+        $libraries = Library::query()->filter($request->all())->allowed()->get(['id', 'name']);
+
+        $containerCount = Container::query()->allowed()
+            ->whereIn("library_id", $libraries->pluck("id")->toArray())
+            ->selectRaw("count(*) as cut, library_id")
+            ->groupBy("library_id")
+            ->pluck("cut", "library_id");
+
+        $libraries->map(fn(Library $library) => $library->container_count = $containerCount->get($library->id, 0));
+
+        return $this->success([
+            'data' => $libraries
+        ]);
     }
 
     /**

+ 16 - 1
app/ModelFilters/LibraryFilter.php

@@ -1,4 +1,4 @@
-<?php 
+<?php
 
 namespace App\ModelFilters;
 
@@ -13,4 +13,19 @@ class LibraryFilter extends ModelFilter
     * @var array
     */
     public $relations = [];
+
+    public function type($type)
+    {
+        return $this->where("type", $type);
+    }
+
+    public function project($id)
+    {
+        return $this->where("project_id", $id);
+    }
+
+    public function asset($id)
+    {
+        return $this->where("asset_id", $id);
+    }
 }