diff --git a/src/app/Console/Commands/AlgoliaImportWorldHeritages.php b/src/app/Console/Commands/AlgoliaImportWorldHeritages.php index 4ab5b09..eae19b9 100644 --- a/src/app/Console/Commands/AlgoliaImportWorldHeritages.php +++ b/src/app/Console/Commands/AlgoliaImportWorldHeritages.php @@ -51,7 +51,12 @@ public function handle(): int WorldHeritage::query() ->with([ - 'countries', + 'images' => function ($query) { + $query->where('is_primary', true)->select(['world_heritage_site_id', 'url']); + }, + 'countries' => function ($query) { + $query->select(['countries.state_party_code', 'countries.name_en', 'countries.name_jp']); + }, ]) ->select([ 'world_heritage_sites.id', @@ -63,7 +68,6 @@ public function handle(): int 'world_heritage_sites.category', 'world_heritage_sites.year_inscribed', 'world_heritage_sites.is_endangered', - 'world_heritage_sites.image_url', ]) ->chunkById($chunk, function ($rows) use ($client, $indexName, $dryRun, &$processed) { $objects = []; @@ -130,7 +134,7 @@ public function handle(): int 'category' => (string) $row->category, 'year_inscribed' => $row->year_inscribed !== null ? (int) $row->year_inscribed : null, 'is_endangered' => (bool) $row->is_endangered, - 'thumbnail_url' => $row->image_url !== null ? (string) $row->image_url : null, + 'thumbnail_url' => $row->images->first()?->url, 'state_party_codes' => $statePartyCodes, 'country_names_jp' => $countryCount > 1 ? $countryNamesJp : [], ]; diff --git a/src/app/Console/Commands/ImportWorldHeritageSiteFromSplitFile.php b/src/app/Console/Commands/ImportWorldHeritageSiteFromSplitFile.php index d19e9aa..2cbc12e 100644 --- a/src/app/Console/Commands/ImportWorldHeritageSiteFromSplitFile.php +++ b/src/app/Console/Commands/ImportWorldHeritageSiteFromSplitFile.php @@ -96,7 +96,6 @@ public function handle(): int 'latitude' => $this->toNullableFloat($row['latitude'] ?? null), 'longitude' => $this->toNullableFloat($row['longitude'] ?? null), 'short_description' => $this->toNullableString($row['short_description'] ?? null), - 'image_url' => $this->toNullableString($row['image_url'] ?? null), 'unesco_site_url' => $this->toNullableString($row['unesco_site_url'] ?? null), 'created_at' => $now, 'updated_at' => $now, diff --git a/src/app/Console/Commands/SplitWorldHeritageJson.php b/src/app/Console/Commands/SplitWorldHeritageJson.php index 46b8e53..f71ba85 100644 --- a/src/app/Console/Commands/SplitWorldHeritageJson.php +++ b/src/app/Console/Commands/SplitWorldHeritageJson.php @@ -282,7 +282,7 @@ public function handle(): int foreach ($imageUrls as $idx => $url) { $images[] = [ 'world_heritage_site_id' => $siteId, - 'url' => hash('sha256', $url), + 'url' => $url, 'sort_order' => $idx, 'is_primary' => ($idx === 0) ? 1 : 0, ]; diff --git a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php index 4c9b246..8967852 100644 --- a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php +++ b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php @@ -69,7 +69,6 @@ private function baseRecord(array $override = []): array 'latitude' => null, 'longitude' => null, 'short_description' => '', - 'image_url' => null, 'unesco_site_url' => null, 'created_at' => $now, 'updated_at' => $now, diff --git a/src/app/Packages/Domains/WorldHeritageReadQueryService.php b/src/app/Packages/Domains/WorldHeritageReadQueryService.php index aa0035e..67fa07c 100644 --- a/src/app/Packages/Domains/WorldHeritageReadQueryService.php +++ b/src/app/Packages/Domains/WorldHeritageReadQueryService.php @@ -33,13 +33,15 @@ public function findByIdsPreserveOrder(array $ids): Collection 'world_heritage_sites.latitude', 'world_heritage_sites.longitude', 'world_heritage_sites.short_description', - 'world_heritage_sites.image_url', ]) ->with([ 'countries' => function ($q) { $q->select('countries.state_party_code', 'countries.name_en', 'countries.name_jp', 'countries.region') ->orderBy('countries.state_party_code', 'asc'); }, + 'images' => function ($imageQuery) { + $imageQuery->where('is_primary', true)->limit(1); + }, ]) ->whereIn('world_heritage_sites.id', $ids) ->get() diff --git a/src/database/migrations/2026_03_29_151147_drop_image_url_from_world_heritage_sites.php b/src/database/migrations/2026_03_29_151147_drop_image_url_from_world_heritage_sites.php new file mode 100644 index 0000000..e52ea42 --- /dev/null +++ b/src/database/migrations/2026_03_29_151147_drop_image_url_from_world_heritage_sites.php @@ -0,0 +1,28 @@ +dropColumn('image_url'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('world_heritage_sites', function (Blueprint $table) { + $table->string('image_url')->nullable()->after('short_description'); + }); + } +}; diff --git a/src/database/migrations/2026_03_29_155722_drop_primary_image_url_from_world_heritage_sites.php b/src/database/migrations/2026_03_29_155722_drop_primary_image_url_from_world_heritage_sites.php new file mode 100644 index 0000000..57d5412 --- /dev/null +++ b/src/database/migrations/2026_03_29_155722_drop_primary_image_url_from_world_heritage_sites.php @@ -0,0 +1,28 @@ +dropColumn('primary_image_url'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('world_heritage_sites', function (Blueprint $table) { + $table->string('primary_image_url')->nullable()->after('short_description'); + }); + } +}; diff --git a/src/database/seeders/WorldHeritageSeeder.php b/src/database/seeders/WorldHeritageSeeder.php index e68ad2e..96f27be 100644 --- a/src/database/seeders/WorldHeritageSeeder.php +++ b/src/database/seeders/WorldHeritageSeeder.php @@ -32,7 +32,6 @@ public function run(): void 'latitude' => 34.8394, 'longitude' => 134.6939, 'short_description' => '白鷺城の名で知られる城郭建築の傑作。天守群と縄張りが良好に保存される。', - 'image_url' => null, 'unesco_site_url' => 'https://whc.unesco.org/en/list/661', 'created_at' => $now, 'updated_at' => $now, ], @@ -56,7 +55,6 @@ public function run(): void 'latitude' => null, 'longitude' => null, 'short_description' => '巨樹・照葉樹林に代表される生態系と景観が特筆される島。', - 'image_url' => null, 'unesco_site_url' => 'https://whc.unesco.org/en/list/662', 'created_at' => $now, 'updated_at' => $now, ], @@ -80,7 +78,6 @@ public function run(): void 'latitude' => null, 'longitude' => null, 'short_description' => '日本最大級のブナ天然林を中心とする山地生態系。', - 'image_url' => null, 'unesco_site_url' => 'https://whc.unesco.org/en/list/663', 'created_at' => $now, 'updated_at' => $now, ], @@ -104,7 +101,6 @@ public function run(): void 'latitude' => 0.0, 'longitude' => 0.0, 'short_description' => '京都・宇治・大津に点在する社寺・庭園・城郭などから成る文化遺産群。', - 'image_url' => null, 'unesco_site_url' => 'https://whc.unesco.org/en/list/688', 'created_at' => $now, 'updated_at' => $now, ], @@ -128,7 +124,6 @@ public function run(): void 'latitude' => 0.0, 'longitude' => 0.0, 'short_description' => '氷期後のブナの自然拡散史を示すヨーロッパ各地の原生的ブナ林群から成る越境・連続資産。', - 'image_url' => '', 'unesco_site_url' => 'https://whc.unesco.org/en/list/1133', 'created_at' => $now, 'updated_at' => $now, ], @@ -152,7 +147,6 @@ public function run(): void 'latitude' => 0.0, 'longitude' => 0.0, 'short_description' => '熊野三山・高野山・吉野・大峯を結ぶ霊場と参詣道の文化的景観。', - 'image_url' => null, 'unesco_site_url' => 'https://whc.unesco.org/en/list/1142', 'created_at' => $now, 'updated_at' => $now, ], @@ -176,7 +170,6 @@ public function run(): void 'latitude' => 0.0, 'longitude' => 0.0, 'short_description' => '日本の象徴たる霊峰。信仰・芸術・登拝文化に深い影響を与えた文化的景観。', - 'image_url' => null, 'unesco_site_url' => 'https://whc.unesco.org/en/list/1418', 'created_at' => $now, 'updated_at' => $now, ], @@ -200,7 +193,6 @@ public function run(): void 'latitude' => 0.0, 'longitude' => 0.0, 'short_description' => '中国・カザフスタン・キルギスにまたがるオアシス都市や遺跡群で構成され、東西交流の歴史を物証する文化遺産群。', - 'image_url' => '', 'unesco_site_url' => 'https://whc.unesco.org/en/list/1442', 'created_at' => $now, 'updated_at' => $now, ], @@ -224,7 +216,6 @@ public function run(): void 'latitude' => 0.0, 'longitude' => 0.0, 'short_description' => '中央アジアのザラフシャン谷からカラクム砂漠にかけて展開するオアシス都市・交易遺跡群の連続資産。', - 'image_url' => null, 'unesco_site_url' => 'https://whc.unesco.org/en/list/1662', 'created_at' => $now, 'updated_at' => $now, ],