Skip to content

Commit

Permalink
Merge pull request #32 from PRTIMES/feature/combine-front-and-back
Browse files Browse the repository at this point in the history
バックエンド改修(その1)
  • Loading branch information
kyoya0819 authored Aug 29, 2024
2 parents e7a229b + 94d3f6c commit 88c3f31
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public function __invoke(Request $request): JsonResponse
$companies->map(function ($company) {
/* @var Company $company */
return [
"id" => $company->id,
"id" => $company->company_id,
"name" => $company->name
];
})->toArray()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php

namespace App\Http\Controllers\Api\PressRelease;

use App\Http\Controllers\Controller;
use App\Models\PressRelease;
use App\UseCases\PressRelease\ListFilterByCompanyId as PressReleaseListFilterByCompanyId;
use Exception;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class CompanyController extends Controller
{
const PRESS_RELEASE_COUNT = 10;

/**
* @param Request $request
* @return JsonResponse
* @throws Exception
*/
public function __invoke(Request $request): JsonResponse
{
$company_ids_raw = $request->query("company_ids");
if ($company_ids_raw === null)
return response()->json();

$company_ids = is_array($company_ids_raw)
? array_map(fn ($company_id) => (int) $company_id, $company_ids_raw)
: [(int) $company_ids_raw];

$releases = PressReleaseListFilterByCompanyId::run($company_ids, self::PRESS_RELEASE_COUNT);

return response()->json(
$releases->map(function ($press_release) {
/* @var PressRelease $press_release */

return [
"title" => $press_release->title,
"summary" => $press_release->summary,
"company_name" => $press_release->company->name,
"url" => route(
"press-release.redirect",
[
"company_id" => $press_release->company_id,
"release_id" => $press_release->release_id
]
)
];
})
->toArray()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public function __invoke(Request $request): JsonResponse
return [
"title" => $press_release->title,
"summary" => $press_release->summary,
"company_name" => $press_release->company->name,
"url" => route(
"press-release.redirect",
[
Expand Down
25 changes: 25 additions & 0 deletions backend/app/UseCases/PressRelease/ListFilterByCompanyId.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace App\UseCases\PressRelease;

use App\Models\PressRelease;
use Illuminate\Database\Eloquent\Collection;

class ListFilterByCompanyId
{

/**
* @param array $company_ids
* @param int $take
* @return Collection<int, PressRelease>
*/
public static function run(
array $company_ids,
int $take = 10
): Collection
{
return PressRelease::with("company")
->whereIn("company_id", $company_ids)
->inRandomOrder()->take($take)->get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static function run(
int $take = 20
): Collection
{
return PressRelease::when($mode !== "neutral", function ($query) use ($user_id, $mode) {
return PressRelease::with("company")->when($mode !== "neutral", function ($query) use ($user_id, $mode) {
$query->whereHas("keywords.view_histories", function ($query) use ($user_id, $mode) {
$query->where("user_id", $user_id)
->when($mode === "love", function ($query) {
Expand Down
1 change: 1 addition & 0 deletions backend/routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
Route::middleware("auth:sanctum")->group(function () {

Route::get("/press-release/recommend", PressRelease\RecommendController::class);
Route::get("/press-release/company", PressRelease\CompanyController::class);

Route::get("/company/list", Company\ListController::class);
});

0 comments on commit 88c3f31

Please sign in to comment.