mirror of
https://github.com/AnimeThemes/animethemes-server.git
synced 2026-07-11 01:24:46 +02:00
92 lines
2.6 KiB
PHP
92 lines
2.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Concerns\Elastic\ConfiguresTextAnalyzers;
|
|
use Elastic\Adapter\Indices\Mapping;
|
|
use Elastic\Adapter\Indices\Settings;
|
|
use Elastic\Migrations\Facades\Index;
|
|
use Elastic\Migrations\MigrationInterface;
|
|
|
|
final class CreateSeriesIndex implements MigrationInterface
|
|
{
|
|
use ConfiguresTextAnalyzers;
|
|
|
|
/**
|
|
* Run the migration.
|
|
*/
|
|
public function up(): void
|
|
{
|
|
Index::createIfNotExists('series', function (Mapping $mapping, Settings $settings) {
|
|
$this->configureTextAnalyzers($settings);
|
|
|
|
$mapping->date('created_at');
|
|
$mapping->text('name', [
|
|
'analyzer' => 'name_search',
|
|
'fields' => [
|
|
'keyword' => [
|
|
'type' => 'keyword',
|
|
],
|
|
],
|
|
]);
|
|
$mapping->long('series_id');
|
|
$mapping->text('slug', [
|
|
'fields' => [
|
|
'keyword' => [
|
|
'type' => 'keyword',
|
|
],
|
|
],
|
|
]);
|
|
$mapping->date('updated_at');
|
|
$mapping->nested('anime', [
|
|
'properties' => [
|
|
'anime_id' => [
|
|
'type' => 'long',
|
|
],
|
|
'created_at' => [
|
|
'type' => 'date',
|
|
],
|
|
'name' => [
|
|
'type' => 'text',
|
|
'copy_to' => ['anime_slug'],
|
|
'analyzer' => 'name_search',
|
|
],
|
|
'season' => [
|
|
'type' => 'long',
|
|
],
|
|
'slug' => [
|
|
'type' => 'text',
|
|
],
|
|
'synopsis' => [
|
|
'type' => 'text',
|
|
],
|
|
'updated_at' => [
|
|
'type' => 'date',
|
|
],
|
|
'year' => [
|
|
'type' => 'long',
|
|
],
|
|
'synonyms' => [
|
|
'type' => 'text',
|
|
'analyzer' => 'name_search',
|
|
'fields' => [
|
|
'keyword' => [
|
|
'type' => 'keyword',
|
|
],
|
|
],
|
|
],
|
|
],
|
|
]);
|
|
$mapping->text('anime_slug');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Reverse the migration.
|
|
*/
|
|
public function down(): void
|
|
{
|
|
Index::dropIfExists('series');
|
|
}
|
|
}
|