linkorb/extractor

提取器:通过查询包提取上下文

v1.1.1 2018-10-31 09:39 UTC

This package is auto-updated.

Last update: 2024-09-18 03:31:19 UTC


README

提取器 是一个库,允许您从 连接(数据库、文件、API 等)中提取数据到一个简单的 JSON 数组,以便进行进一步处理。

无需编程,您只需要编写提取器定义。

用例

  • 从无法修改的应用程序中提取数据
  • 报告
  • 收集上下文数据(与实体 "X" 相关的所有记录)。

提取器 + 上下文 = <3

提取器与 github.com/linkorb/context 协同工作特别出色

您可以使用提取器的输出将数据加载到上下文中进行进一步处理。这使您能够指定高级多向关系,以进行灵活的内存导航。

示例:wordpress-post-extractor.yaml

查看 examples/wordpress-post-extractor.yaml 定义文件中的简单示例。

此示例需要一个名为 InputpostName

基于输入,它运行一系列命令。

每个命令都有一个 method。不同的连接支持不同的方法。例如,PdoConnection 支持查询方法,而 XyzApiConnection 可能支持 request 等方法。

您可以指定包含一组占位符的 SQL 查询。

占位符在执行命令之前作为参数传递。这允许您从 "inputs" 表或之前查询过的表中传递参数。

在 wordpress 示例中,您会看到第一个命令传递了从初始输入中获取的 postName

第二个命令传递了在第一个命令中检索到的 postId

这允许您将查询堆叠在彼此之上。

输出格式

提取器收集一组表,每张表有若干行。您可以将其视为数据库的快照。

输出是一个简单的数组(您可以对其进行 json_encode),如下所示

{
  "inputs": [
    {
      "postName": "hello-world"
    }
  ],
  "posts": [
    {
      "ID": "3021",
      "post_title": "Hello world",
      "post_name": "hello-world",
      "post_date": "2018-06-17 09:00:00",
      "post_status": "publish"
    }
  ],
  "comments": [
    {
      "comment_ID": "431",
      "comment_author": "Joe Johnson",
      "comment_author_email": "joe@example.com",
      "comment_date": "2018-06-17 11:06:00",
      "comment_content": "Hello to you too!"
    },
    {
      "comment_ID": "452",
      "comment_author": "Alice Alisson",
      "comment_author_email": "alice@example.com",
      "comment_date": "2018-06-17 13:21:00",
      "comment_content": "Nice post! and a 'Hello' back :-)"
    }
  }
}

您会看到 "inputs" 提供了一个包含单行的表。 "posts" 表包含一个行,该行基于输入参数选择。 "comments" 表包含所有与 postId 匹配的行。

请注意,行没有键,需要使用这些提取的代码来分配行 ID 或构建索引(如果需要)。

给评论表添加有用 ID 的简单方法之一是根据每行的 comment_ID

$comments = [];
foreach ($data['comments'] as $i=>$row) {
  $comments[$row['comment_ID']] = $row;
}
$data['comments'] = $comments;

许可证

MIT(见 LICENSE.md

由 LinkORB 工程团队提供


在我们的工程网站上查看我们的其他项目 linkorb.com/engineering

顺便说一下,我们正在招聘!