wmde/fundraising-store

围绕筹款数据库的持久化服务

10.5.0 2020-02-03 09:58 UTC

README

Build Status Scrutinizer Code Quality Code Coverage Download count License

Latest Stable Version Latest Unstable Version

筹款存储 包含 WMDE 筹款代码库的持久化服务。

安装

您可以使用 Composer 下载并安装此软件包以及其依赖项。

要将此软件包添加为本地、项目特定的依赖项,请运行

composer require wmde/fundraising-store

此软件包提供了 Doctrine 控制台所需的 vendor/bin/cli-config.php 文件。一个与集成测试使用的容器兼容的默认数据库配置(见 docker-compose.yml)可以在 local-db-config.php 中找到。希望使用此软件包并结合 Doctrine 控制台的应用程序应提供自己的 cli-config.php

架构和未来

此库及其创建的表被筹款 Bounded Contexts 和筹款运营中心应用程序使用。想法是将此库通过将特定于 Bounded Context 的所有代码移动到该 Bounded Context 以及将特定于应用程序的所有代码移动到该应用程序来迁移出去。这样,Bounded Contexts 可以有真正的私有持久性并遵循 Clean Architecture + Bounded Contexts 架构规则

有关我们如何得到这个库的简要历史,请参阅 Wikimedia 筹款软件中的 Bounded Contexts

开发

为了为开发创造一个公平的竞争环境,该项目使用 docker & docker-compose,以及 composer 进行依赖项管理。

提供系统

docker-compose build

安装依赖项

docker run -it --rm --user $(id -u):$(id -g) -v "$PWD":/code -v ~/.composer:/composer -w /code composer composer install

测试

docker-compose run --rm app vendor/bin/phpunit

使用 composer 运行测试和代码风格检查

所有提交的代码都由我们的 CI 与单元测试和编码风格指南进行验证。这些工具的配置可以在根目录中找到。通过 composer 安装后,您可以直接从 vendor/bin 中的位置调用这些工具,或使用提供的 composer 任务。

composer ci   # Run all checks
composer cs   # Run style checks
composer test # Run unit tests

请注意,Composer 作为脚本运行器和容器化的概念可能不会直接一起工作。

发布说明

计划在下一个版本(11.x)中发布

  • 将捐赠和会员与 AddressChange 的关系反转。警告:这将删除“级联”功能(在创建捐赠/会员时自动创建 AddressChange 记录)。FundraisingFrontend 将必须实现一个事件处理器来完成创建。

版本 10.5.0(2020-01-31)

  • $additionalMetadataDrivers 参数添加到 Factory 以支持 XML 映射实体(例如,在 AddressChange Bounded Context 中)。

版本 10.4.1(2020-01-30)

  • donationReceipt 默认值更改为 true

版本 10.4.0(2019-05-29)

  • donationReceipt 添加到 AddressChange

版本 10.3.3(2019-02-04)

  • 修复地址更改迁移

版本 10.3.2(2019-01-31)

  • 允许 getAddressAddressChange 中返回 null

版本 10.3.1(2019-01-30)

  • 修复数据库中 createdAtmodifiedAt 列的列名,以 AddressChange 为例

版本 10.3.0(2019-01-29)

  • createdAtmodifiedAt 添加到 AddressChange

版本 10.2.0 (2019-01-18)

  • exportDate 添加到 AddressChange

版本 10.1.0 (2019-01-16)

  • AddressChange 中删除 thirdPartyIdentifier

版本 10.0.0 (2019-01-11)

  • addressTypethirdPartyIdentifier 添加到 AddressChange

版本 9.0.0 (2018-08-16)

  • 删除 doctrine 实体 UserActionLogBackendBannerBackendImpression 并将它们移动到 fundraising-backend 存储库

版本 8.0.0 (2018-06-06)

  • 为地址导出功能添加 AddressChange 实体

版本 7.0.1 (2017-12-05)

  • 将默认时间戳值从 "0" 改为 "当前时间",以防止在新版本的 MySQL 上出错

版本 7.0.0 (2017-11-01)

  • 引入了 MembershipApplication::setDonationReceipt() 等等

版本 6.1.0 (2017-08-16)

  • 出于历史原因,引入了常量 Donation::STATUS_EXPORTED

版本 6.0.1 (2017-08-02)

  • 更新了 Doctrine DBAL 和 ORM 的最小版本。

版本 6.0.0 (2017-07-18)

  • 添加了 DonationPayments\SofortPayment 实体

版本 5.0.0 (2017-03-30)

破坏性更改

  • 为捐赠和会员资格添加全文索引。这破坏了 MySQL 版本 < 5.6 的向后兼容性。
  • 将所有捐赠索引的前缀设置为 d_
  • MembershipApplication 中的 donation_id 标记为已弃用。它不再由筹资前端写入,但仍然在后端的一些地方被引用,因此我们现在只是将其标记为已弃用而不是删除它。

版本 4.2.0 (2017-01-04)

  • 添加了 MembershipApplication::isDeleted()

版本 4.1.0 (2016-12-06)

  • 为 Factory 添加了设置代理目录的参数。出于向后兼容性的考虑,它是可选的,默认为 /tmp

版本 4.0.0 (2016-11-25)

破坏性更改

  • 订阅确认码现在是一个普通字符串,而不是二进制(blob)。这使得它更容易阅读和测试。

版本 3.0.0 (2016-11-16)

破坏性更改

  • 已删除订阅状态标志,并建议不再使用 setStatus 和 getStatus。
  • 将最低 PHP 版本更改为 7.0

新功能

  • subscription 表添加了 source 字段。此字段指示导致订阅的原因,例如“稍后提醒”功能。
  • 添加了 Subscription::getSourceSubscription::setSource
  • 添加了 Subscription::markAsConfirmed
  • 添加了 Subscription::markForModeration
  • 添加了 Subscription::needsModeration

错误修复

  • Subscription::isUnconfirmed 现在在订阅被标记为需要审核时正确返回 true。

版本 2.1.0 (2016-10-10)

  • 模式更改:在 request 表中添加了 payment_type 字段列
  • 添加了 MembershipApplication::setPaymentTypeMembershipApplication::getPaymentType
  • 在应用程序中包含 FundraisingStore 时,删除了重新使用 cli-config.php 文件的能力。

版本 2.0.1 (2016-09-28)

根据语义版本控制规则,此版本应该是 2.1,但错误地标记了。

  • 添加了 MembershipApplicationData::setPreservedStatusMembershipApplicationData::getPreservedStatus。这用于在状态从正值变为负值时存储之前的状态。

版本 2.0.0 (2016-08-03)

破坏性更改

  • 重命名了几个实体。数据库表名没有更改,以保持向后兼容。
    • Spenden => Donation
    • Users => User
    • BackendImpressions => BackendImpression
    • Request 被拆分为 MembershipApplicationSubscription(已删除类型字段)
  • DonationMembershipApplication 的公共 PHP 接口已更改为英文。
  • 现在自动添加到捐赠、会员申请和订阅的创建时间戳。捐赠创建时间戳 dt_new 现在是强制性的(不可为空)。
  • MembershipApplication 中删除了 guid 字段。
  • 将最低 PHP 版本更改为 5.6

新功能

  • 添加了 Address 实体
  • 添加了 DonationData 类以提供更便捷的数据字段访问
  • Donation 添加了新的方法
    • setId
    • getDecodedData
    • encodeAndSetData
    • getDataObject
    • setDataObject
    • modifyDataObject
  • 添加了 MembershipApplicationData 类,以提供更便捷的数据字段访问
  • MembershipApplication 添加了新的方法
    • setId
    • getDecodedData
    • encodeAndSetData
    • getDataObject
    • setDataObject
    • modifyDataObject

版本 1.0 (2016-01-11)

  • 为 Doctrine ORM 壳命令添加了 CLI 配置
  • 添加了请求类型和状态常量
  • 当设置首字母或姓氏时,自动在请求中设置全名。
  • 将最低 PHP 版本更改为 5.5

版本 0.1 (2015-07-10)

初始版本,包括 Store\FactoryStore\Installer 以及这些实体

  • ActionLog
  • BackendBanner
  • BackendImpressions
  • Request
  • Spenden
  • Users

未来计划

  • 将支付元数据从 Donation::data 迁移到 DonationPayment 抽象类的特定子类。

链接