decatur-vote / diffs-db
一个库,用于在数据库中存储文本差异并提供在decatur-vote/text-diff之上的便利实用工具。
v1.0.x-dev
2023-11-01 15:07 UTC
Requires
- decatur-vote/text-diff: v1.0.x-dev
- taeluf/big-db: v1.0.x-dev
Requires (Dev)
- taeluf/cli: v0.1.x-dev
- taeluf/code-scrawl: v0.8.x-dev
- taeluf/tester: v0.3.x-dev
Suggests
- taeluf/cli: v0.1.x-dev, for the CLI features to work
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中。