gpnalin / module-date-time
N/A
1.0.2
2024-08-26 01:46 UTC
Requires
- php: ~8.1.0||~8.2.0||~8.3.0
- magento/framework: *
README
概述
Aligent DateTime API 是一个 Magento 2 模块,它提供了计算两个日期之间差异的功能。它支持多种计算类型,并且可以通过 REST API 和 GraphQL 进行访问。
功能
- 计算两个日期之间的差异
days:计算总天数weekdays:计算工作日(周一至周五)的数量weeks:计算完整周数hours:计算总小时数minutes:计算总分钟数seconds:计算总秒数years:计算年数
- 支持带时区的标准日期时间格式
- REST API 端点
- GraphQL 查询
- 单元测试和 API/GraphQL 功能测试
安装
- 如果您已经设置了 Magento 实例,请跳到 #6。
- 创建您的项目目录,然后进入它
mkdir magento.test; cd $_; - 下载 Docker Compose 模板
curl -s https://raw.githubusercontent.com/markshust/docker-magento/master/lib/template | bash - 下载您想使用的 Magento 版本
bin/download 2.4.7 community - 运行 Magento 安装程序
bin/setup magento.test - 安装模块
bin/composer require gpnalin/module-date-time # or clone the module to app/code/Aligent/DateTime mkdir -p app/code/Aligent; cd $_; git clone git@github.com:gpnalin/module-date-time.git DateTime; - 通过运行以下命令启用模块
bin/magento module:enable Aligent_DateTime - 运行 Magento 设置升级
bin/magento setup:upgrade - 编译依赖注入
bin/magento setup:di:compile - 清理缓存
bin/magento cache:clean
用法
REST API
端点
POST /V1/datetime/calculate
参数
startDate(字符串):起始日期,ISO 8601 格式(例如,“2023-01-01T00:00:00+00:00”)endDate(字符串):结束日期,ISO 8601 格式(例如,“2023-01-10T00:00:00+00:00”)calculationType(字符串):要执行的计算类型(days, weekdays, weeks, hours, minutes, seconds, years)
示例请求
POST /V1/datetime/calculate Content-Type: application/json { "startDate": "2023-01-01T00:00:00+00:00", "endDate": "2023-01-10T00:00:00+00:00", "calculationType": "days" }
示例响应
{
"result": 9
}
GraphQL
查询
query DiffCalculatorQuery( $startDate: String!, $endDate: String!, $calculationType: CalculationType! ) { DiffCalculatorQuery( startDate: $startDate, endDate: $endDate, calculationType: $calculationType ) { result } }
变量
{
"startDate": "2023-01-01T00:00:00+00:00",
"endDate": "2023-01-10T00:00:00+00:00",
"calculationType": "days"
}
示例响应
{
"data": {
"DiffCalculatorQuery": {
"result": 9
}
}
}
错误处理
如果输入无效或计算过程中发生意外错误,REST API 和 GraphQL 查询将返回适当的错误消息。
注意
- 所有日期都应提供带时区信息的标准日期时间格式。
- 如果没有指定时区,则假定使用 UTC。
endDate必须大于或等于startDate。
测试覆盖率
- 单元测试
/usr/local/bin/php -dmemory_limit=-1 $(pwd)/vendor/bin/phpunit --bootstrap $(pwd)/dev/tests/unit/framework/bootstrap.php --configuration $(pwd)/dev/tests/unit/phpunit.xml.dist $(pwd)/vendor/gpnalin/module-date-time/Test/Unit/ - Web API 功能测试
/usr/local/bin/php -dmemory_limit=-1 $(pwd)/vendor/bin/phpunit -c $(pwd)/dev/tests/api-functional/phpunit_rest.xml.dist $(pwd)/vendor/gpnalin/module-date-time/Test/Api/ - GraphQL 功能测试
/usr/local/bin/php -dmemory_limit=-1 $(pwd)/vendor/bin/phpunit -c $(pwd)/dev/tests/api-functional/phpunit_graphql.xml.dist $(pwd)/vendor/gpnalin/module-date-time/Test/GraphQl/