}
// Добавляем индекс для быстрого поиска по marketplace_order_id
- $this->createIndex(
- 'idx-sales-marketplace_order_id',
- self::TABLE_NAME,
- 'marketplace_order_id'
- );
+ if (!$this->indexExists('idx-sales-marketplace_order_id')) {
+ $this->createIndex(
+ 'idx-sales-marketplace_order_id',
+ self::TABLE_NAME,
+ 'marketplace_order_id'
+ );
+ }
// Добавляем составной индекс для аналитики по маркетплейсам
- $this->createIndex(
- 'idx-sales-marketplace_name_date',
- self::TABLE_NAME,
- ['marketplace_name', 'date']
- );
+ if (!$this->indexExists('idx-sales-marketplace_name_date')) {
+ $this->createIndex(
+ 'idx-sales-marketplace_name_date',
+ self::TABLE_NAME,
+ ['marketplace_name', 'date']
+ );
+ }
echo " > Поля marketplace_order_id и marketplace_name успешно добавлены в таблицу erp24.sales\n";
}
echo " > Поля marketplace_order_id и marketplace_name удалены из таблицы erp24.sales\n";
}
+
+ private function indexExists(string $indexName): bool
+ {
+ $result = $this->db->createCommand(
+ "SELECT 1 FROM pg_indexes WHERE indexname = :name"
+ )->bindValue(':name', $indexName)->queryScalar();
+
+ return $result !== false;
+ }
}