buro26 / sync-component
v0.0.7
2024-03-05 08:45 UTC
Requires
- php: >=8.1.0
- swift-api/swift: ^0.2.16
Requires (Dev)
- roave/security-advisories: dev-latest
README
这是Buro26同步项目的同步组件。它使用Swift项目。
该项目用于在各个系统之间同步数据。同步数据由'Handler'提供,这些是负责收集数据并在'HandlerSyncItems'中对数据进行格式化的类。这些项目遵循通用接口。根据这些数据,同步组件将确定是否有更改,如果有,则将更新后的数据保存到数据库中并注册更新。
该组件提供API以请求自某个日期以来的所有更新、创建和删除。
入门
要求
- PHP 8.1或更高版本
- Swift 0.2.16或更高版本
安装
在您的Swift项目中安装组件。
composer require buro26/sync-component
在Swift中注册组件
在项目的根services.yaml
文件中注册组件。
services:
_defaults:
autowire: false
autoconfigure: true
public: true
Foobar\:
resource: 'app/Foobar/*'
Buro26\Sync\:
resource: 'vendor/buro26/sync-component/src/*'
处理器
处理器是负责收集数据并在'HandlerSyncItems'中对数据进行格式化的类。这些项目遵循通用接口。根据这些数据,同步组件将确定是否有更改,如果有,则将更新后的数据保存到数据库中并注册更新。
中间件
中间件用于同步过程中操纵或验证数据。中间件按照提供的顺序执行。中间件应实现Buro26\Sync\Middleware\MiddlewareInterface
接口。
日志记录
日志记录可以记录到日志文件或控制台。
执行同步
要执行同步,您可以使用sync:run
命令。
php bin/console sync:run
要运行特定作用域和标记的同步,您可以使用--scope
和--tag
选项。
php bin/console sync:run --scope=combipac --tag=product
列出已注册的处理器
要列出所有已注册的处理器,您可以使用sync:handlers:list
命令。
php bin/console sync:handlers:list
这将显示如下内容。
$ bin/console sync:handlers:list
Registered 5 handlers
=====================
----------------------- ---------------------- ------ ----------------------------------
scope tag type FQCN
----------------------- ---------------------- ------ ----------------------------------
combipac category IN Combipac\Handler\CategoryHandler
combipac machine IN Combipac\Handler\MachineHandler
combipac product IN Combipac\Handler\ProductHandler
multivers => magento2 customer => customer OUT Magento2\Handler\CustomerHandler
compano => magento2 product => product OUT Magento2\Handler\ProductHandler
----------------------- ---------------------- ------ ----------------------------------
获取同步数据
REST
可以使用GET /sync/latest/[a:scope]/[a:tag]/
端点请求同步数据。此端点接受以下查询参数
- from: 应返回同步数据的起始日期。这应该是一个有效的日期字符串。
- to: 应返回同步数据的结束日期。这应该是一个有效的日期字符串。
端点将返回具有三个属性的对象
- creations: 自提供的日期以来创建的所有项目的数组。
- updates: 自提供的日期以来更新过的所有项目的数组。
- deletions: 自提供的日期以来删除的所有项目的数组。
GraphQL
可以使用SyncItemsLatest
查询请求同步数据。此查询接受以下参数
- scope: 应返回同步数据的作用域。
- tag: 应返回同步数据的标记。
- from: 应返回同步数据的起始日期。这应该是一个有效的日期字符串。
- to: 应返回同步数据的结束日期。这应该是一个有效的日期字符串。
查询将返回具有三个属性的对象
- creations: 自提供的日期以来创建的所有项目的数组。
- updates: 自提供的日期以来更新过的所有项目的数组。
- deletions: 自提供的日期以来删除的所有项目的数组。