Parcourir la source

:fire: Schema::table

visuddhinanda il y a 1 mois
Parent
commit
031827aea8

+ 49 - 48
api-v12/database/migrations/2021_12_30_053602_add_func_to_fts_texts_table.php

@@ -4,6 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
 
 return new class extends Migration
 {
@@ -14,48 +15,45 @@ return new class extends Migration
      */
     public function up(): void
     {
-        Schema::table('fts_texts', function (Blueprint $table) {
-            //
-        });
+        try {
+            $sql = 'CREATE TEXT SEARCH CONFIGURATION pali ( parser = pg_catalog.default );';
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = 'CREATE TEXT SEARCH CONFIGURATION pali ( parser = pg_catalog.default );';
-        DB::connection()->getPdo()->exec($sql);
+            $sql = 'CREATE TEXT SEARCH CONFIGURATION pali_unaccent ( parser = pg_catalog.default );';
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = 'CREATE TEXT SEARCH CONFIGURATION pali_unaccent ( parser = pg_catalog.default );';
-        DB::connection()->getPdo()->exec($sql);
+            $sql = 'CREATE TEXT SEARCH DICTIONARY pali_stem ( TEMPLATE = synonym, SYNONYMS = pali );';
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = 'CREATE TEXT SEARCH DICTIONARY pali_stem ( TEMPLATE = synonym, SYNONYMS = pali );';
-        DB::connection()->getPdo()->exec($sql);
+            $sql = ' CREATE TEXT SEARCH DICTIONARY pali_stopwords ( TEMPLATE = pg_catalog.simple, STOPWORDS = pali, ACCEPT = true);';
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = ' CREATE TEXT SEARCH DICTIONARY pali_stopwords ( TEMPLATE = pg_catalog.simple, STOPWORDS = pali, ACCEPT = true);';
-        DB::connection()->getPdo()->exec($sql);
-
-        $sql = '
+            $sql = '
 ALTER TEXT SEARCH CONFIGURATION pali
 ADD MAPPING FOR asciiword, word, hword_part, hword_asciipart
 WITH pali_stem, pali_stopwords;';
-        DB::connection()->getPdo()->exec($sql);
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = '
+            $sql = '
 CREATE EXTENSION IF NOT EXISTS "unaccent";
 ALTER TEXT SEARCH CONFIGURATION pali_unaccent
 ADD MAPPING FOR asciiword, word, hword_part, hword_asciipart
 WITH unaccent, pali_stem, pali_stopwords;';
-        DB::connection()->getPdo()->exec($sql);
+            DB::connection()->getPdo()->exec($sql);
 
 
-        $sql = "ALTER TABLE fts_texts
+            $sql = "ALTER TABLE fts_texts
 ADD COLUMN full_text_search_weighted TSVECTOR
 GENERATED ALWAYS AS (
-   setweight(to_tsvector('pali', coalesce(content,'')), 'A')  || ' ' ||
-   setweight(to_tsvector('pali', coalesce(bold_single,'')), 'B') || ' '  ||
-   setweight(to_tsvector('pali', coalesce(bold_double,'')), 'C') || ' ' ||
-   setweight(to_tsvector('pali', coalesce(bold_multiple,'')), 'D')
+setweight(to_tsvector('pali', coalesce(content,'')), 'A')  || ' ' ||
+setweight(to_tsvector('pali', coalesce(bold_single,'')), 'B') || ' '  ||
+setweight(to_tsvector('pali', coalesce(bold_double,'')), 'C') || ' ' ||
+setweight(to_tsvector('pali', coalesce(bold_multiple,'')), 'D')
 ) STORED;
 ";
-        DB::connection()->getPdo()->exec($sql);
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = "
+            $sql = "
 ALTER TABLE fts_texts
 ADD COLUMN full_text_search_weighted_unaccent TSVECTOR
 GENERATED ALWAYS AS (
@@ -64,13 +62,16 @@ setweight(to_tsvector('pali_unaccent', coalesce(bold_single,'')), 'B') || ' '  |
 setweight(to_tsvector('pali_unaccent', coalesce(bold_double,'')), 'C') || ' ' ||
 setweight(to_tsvector('pali_unaccent', coalesce(bold_multiple,'')), 'D')
 ) STORED;";
-        DB::connection()->getPdo()->exec($sql);
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = "CREATE INDEX full_text_search_weighted_idx ON fts_texts USING GIN (full_text_search_weighted);";
-        DB::connection()->getPdo()->exec($sql);
+            $sql = "CREATE INDEX full_text_search_weighted_idx ON fts_texts USING GIN (full_text_search_weighted);";
+            DB::connection()->getPdo()->exec($sql);
 
-        $sql = "CREATE INDEX full_text_search_weighted__unaccent_idx ON fts_texts USING GIN (full_text_search_weighted_unaccent);";
-        DB::connection()->getPdo()->exec($sql);
+            $sql = "CREATE INDEX full_text_search_weighted__unaccent_idx ON fts_texts USING GIN (full_text_search_weighted_unaccent);";
+            DB::connection()->getPdo()->exec($sql);
+        } catch (\Throwable $th) {
+            Log::error('fts migrate', ['data' => $th->getMessage()]);
+        }
     }
 
     /**
@@ -80,25 +81,25 @@ setweight(to_tsvector('pali_unaccent', coalesce(bold_multiple,'')), 'D')
      */
     public function down(): void
     {
-        Schema::table('fts_texts', function (Blueprint $table) {
-            //
-        });
-
-        # 删除全文检索配置 pali
-        $sql = 'DROP TEXT SEARCH CONFIGURATION  pali ;';
-        DB::connection()->getPdo()->exec($sql);
-
-        # 删除全文检索配置 pali_unaccent 无标音符号版
-        $sql = 'DROP TEXT SEARCH CONFIGURATION pali_unaccent ;';
-        DB::connection()->getPdo()->exec($sql);
-
-
-        # 删除巴利语词形转换字典
-        $sql = 'DROP TEXT SEARCH DICTIONARY pali_stem ;';
-        DB::connection()->getPdo()->exec($sql);
-
-        # 删除巴利语停用词字典
-        $sql = 'DROP TEXT SEARCH DICTIONARY pali_stopwords ;';
-        DB::connection()->getPdo()->exec($sql);
+        try {
+            # 删除全文检索配置 pali
+            $sql = 'DROP TEXT SEARCH CONFIGURATION  pali ;';
+            DB::connection()->getPdo()->exec($sql);
+
+            # 删除全文检索配置 pali_unaccent 无标音符号版
+            $sql = 'DROP TEXT SEARCH CONFIGURATION pali_unaccent ;';
+            DB::connection()->getPdo()->exec($sql);
+
+
+            # 删除巴利语词形转换字典
+            $sql = 'DROP TEXT SEARCH DICTIONARY pali_stem ;';
+            DB::connection()->getPdo()->exec($sql);
+
+            # 删除巴利语停用词字典
+            $sql = 'DROP TEXT SEARCH DICTIONARY pali_stopwords ;';
+            DB::connection()->getPdo()->exec($sql);
+        } catch (\Throwable $th) {
+            Log::error('fts migrate', ['data' => $th->getMessage()]);
+        }
     }
 };