vetcore/vetmanager-migrator
Composer 安装命令:
composer require vetcore/vetmanager-migrator
包简介
Laravel package for migrating data from VetManager API to local database
README 文档
README
Laravel пакет для миграции данных из VetManager API в локальную базу данных.
Установка
Через Composer (локальный пакет)
Добавьте пакет в composer.json вашего проекта:
{
"repositories": [
{
"type": "path",
"url": "./packages/vetmanager-migrator"
}
],
"require": {
"vetcore/vetmanager-migrator": "@dev"
}
}
Затем выполните:
composer require vetcore/vetmanager-migrator
Публикация конфигурации
php artisan vendor:publish --tag=vetmanager-migrator-config
Конфигурация
Добавьте в ваш .env файл:
VETMANAGER_DOMAIN=your-domain.vetmanager.ru VETMANAGER_API_KEY=your-api-key VETMANAGER_TIMEOUT=30
Также вы можете настроить классы моделей через переменные окружения:
VETMANAGER_MODEL_CITY=App\Models\Main\Address\City VETMANAGER_MODEL_STREET=App\Models\Main\Address\Street VETMANAGER_MODEL_CLIENT=App\Models\Main\Client\Client VETMANAGER_MODEL_ADDRESS=App\Models\Main\Address\Address VETMANAGER_MODEL_PET=App\Models\Main\Pet\Pet
Или отредактируйте файл config/vetmanager-migrator.php после публикации.
Использование
Базовое использование
use VetCore\VetManagerMigrator\VetManagerMigrator; // Создание экземпляра (параметры берутся из конфига) $migrator = new VetManagerMigrator(); // Или с явным указанием параметров $migrator = new VetManagerMigrator('your-domain.vetmanager.ru', 'your-api-key'); // Импорт всех данных $results = $migrator->migrateAll(); // Импорт отдельных типов данных $citiesCount = $migrator->importCities(); $streetsCount = $migrator->importStreets(); $clientsCount = $migrator->importClients(); $addressesCount = $migrator->importAddresses(); $petsCount = $migrator->importPets();
Использование в Artisan команде
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use VetCore\VetManagerMigrator\VetManagerMigrator; class VetManagerMigrateCommand extends Command { protected $signature = 'vetmanager:migrate {--domain= : VetManager domain name} {--api-key= : VetManager API key} {--limit= : Limit number of records to import}'; protected $description = 'Migrate data from VetManager to local database'; public function handle() { $domain = $this->option('domain') ?? config('vetmanager-migrator.domain'); $apiKey = $this->option('api-key') ?? config('vetmanager-migrator.api_key'); $limit = $this->option('limit') ? (int) $this->option('limit') : null; if (empty($domain) || empty($apiKey)) { $this->error('Domain and API key are required'); return 1; } try { $migrator = new VetManagerMigrator($domain, $apiKey); $this->info("Starting migration from VetManager: {$domain}"); $results = $migrator->migrateAll($limit, function ($message) { $this->info($message); }); $this->info('Migration completed successfully!'); $this->table( ['Type', 'Imported'], [ ['Cities', $results['cities']], ['Streets', $results['streets']], ['Clients', $results['clients']], ['Addresses', $results['addresses']], ['Pets', $results['pets']], ] ); return 0; } catch (\Exception $e) { $this->error('Migration failed: ' . $e->getMessage()); return 1; } } }
Использование клиента напрямую
use VetCore\VetManagerMigrator\VetManagerClient; $client = new VetManagerClient('your-domain.vetmanager.ru', 'your-api-key'); // Получить все города $cities = $client->getAll('city'); // Получить клиентов с лимитом $clients = $client->getAll('client', 100, 500); // Выполнить произвольный запрос $data = $client->get('pet', ['filter' => ['owner_id' => 123]]);
Использование сервисов импорта напрямую
use VetCore\VetManagerMigrator\VetManagerClient; use VetCore\VetManagerMigrator\Services\CityImporter; $client = new VetManagerClient('your-domain.vetmanager.ru', 'your-api-key'); $importer = new CityImporter('App\Models\Main\Address\City'); $count = $importer->import($client, 100);
Структура пакета
VetManagerClient- клиент для работы с VetManager APIVetManagerMigrator- главный класс для миграции данныхServices/- сервисы импорта для каждого типа данных:CityImporterStreetImporterClientImporterAddressImporterPetImporter
DataExtractor- утилиты для извлечения и обработки данных из APIContracts/- интерфейсы для расширения функциональности
Требования
- PHP >= 8.2
- Laravel >= 11.0
- Guzzle HTTP Client
- otis22/vetmanager-rest-api
- otis22/vetmanager-url
Лицензия
MIT
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-12-13