decatur-vote/diffs-db

一个库,用于在数据库中存储文本差异并提供在decatur-vote/text-diff之上的便利实用工具。

v1.0.x-dev 2023-11-01 15:07 UTC

This package is auto-updated.

Last update: 2024-09-30 01:49:07 UTC


README

差异数据库

一个简单的数据库库,用于存储差异和回滚到先前版本(或从旧版本快速前进)。

使用decatur-vote/text-diff生成差异,并使用taeluf/big-db进行数据库迁移、ORM和存储查询。

有关附加的数据库和差异功能,请参阅上述库。DiffsDb是围绕它们的一个非常简单的包装器。

状态

可能已经准备好使用?功能不多(它应该是相当简单的)。测试通过(尽管测试并不很彻底)。尚未在实际环境中测试。

安装

composer require decatur-vote/diffs-db v1.0.x-dev   

或者在您的composer.json

{"require":{ "decatur-vote/diffs-db": "v1.0.x-dev"}}  

文档

  • 下面是大多数用例的用法。
  • TextDiff ORM类
  • DiffsDb 数据库层的基类(用于BigDb)。包含辅助函数store_diff和前进/后退。
  • text_diffs.sql 此库中使用的SQL
  • 文本差异库 - 用于任何手动文本差异管理
  • BigDb库 - 了解如何与数据库一起工作。您也可以始终使用PDO实例。

初始化数据库

在您的CLI中运行此命令

bin/diffs-db create-db -pdo path/to/pdo.php  

您必须创建文件path/to/pdo.php并使其返回PDO实例。表将使用该实例创建。

用法

基本上就是这些。

<?php  
$pdo = new \PDO(...);  
$diffDb = new \DecaturVote\DiffDb($pdo);  
$diffDb->migrate(0,1); // initialize the database  
  
// these 3 args are your responsibility, and can be used in your own custom queries however you wish.  
$uuid = uniqid(); // up to 64 chars  
$permission = 'public';  // up to 32 chars  
$extra = 'Descriptive text, not intended for machine use. permission is intended for machine uses'; // up to 256 chars  
  
// store_diff() returns a \DecaturVote\DiffDb\TextDiff object & INSERTs into database  
$diff1 = $diffDb->store_diff('original', 'first change', $uuid, $permission, $extra);  
$diff2 = $diffDb->store_diff('first change', "first change\nsecond change", $uuid, $permission, $extra);  
$diff3 = $diffDb->store_diff("first change\nsecond change",  "third change", $uuid, 'private', $extra);  
  
  
// get all diffs for the uuid.  
$diffs = $diffDb->get_diffs($uuid);  
// $diffDb->get_diffs($uuid, 'public'); # if you only want public diffs - Useful for displaying diffs to end-users, bad for converting text.  
  
// get your original text  
$original = $diffDb->backward("third change", $diffs);  
  
// use the original text + diffs to get the latest text  
$latest = $diffDb->forward('original', $diffs);  
  
// Only go back by one diff  
$back_one = $diffDb->backward("third change", array_slice($diffs,-1));  

您也可以按需使用TextDiff ORM。它基本上只是数据库每列的属性。

开发说明

  • 使用taeluf/tester。使用phptest运行测试
  • 使用taeluf/code-scrawl。使用vendor/bin/scrawl生成更新的文档。在.docsrc中编辑文档,而不是在docs/或根README.md中。