olivernybroe/lighthouse-math-scalars

用于与 https://github.com/webonyx/graphql-php 一起使用的自定义标量类型集合

v0.2.2 2021-02-02 06:45 UTC

This package is auto-updated.

Last update: 2024-08-29 05:43:44 UTC


README

用于与Lighthouse一起使用的自定义标量类型集合。

安装

composer require olivernybroe/lighthouse-math-scalars

使用

您可以使用提供的标量类型,就像在模式定义中使用任何其他类型一样。
标量类型会在Lighthouse中自动注册。

type Battle {
  id: ID!
  attacker: User!
  defender: User!
  gold_stolen_ratio: Percentage!
  gold_stolen: BigInteger!
}

标量类型

BigInteger

此标量表示一个大小最多为 2^63 的整数,而内置的 Int 类型限制为 2^31。返回的值表示为整数,而不是字符串。

BigIntegerString

此标量表示一个无限制大小的整数。它总是以字符串的形式返回值。
BigInteger 总是返回一个整数,但限制为 2^63,而 BigIntegerString 适用于需要比这更大值的场景。

BigIntegerDynamic

此标量表示一个比内置 Int 类型更大的整数。
内置类型限制为 2^31,但此类型的大小无限制,因为它可以使用字符串来表示。

它将以整数形式返回您查询的结果,只要您的整数小于 2^63。如果您的整数大于这个值,它将以字符串形式返回。

Percentage

将整数值转换为百分比。

通常,我们许多人将百分比存储为整数值,并将其除以100以获取百分比。
此标量会为您执行此转换。如果用作输入类型,它也会执行相同的转换。

此标量对API的用户来说很有用,可以快速识别出类型是百分比。

转换

一组可以在Laravel模型中使用的转换,用于转换属性。

BigInteger (OliverNybroe\LighthouseMathScalars\Casts\BigInteger)

当处理大于 2^63 的整数时,需要一个类来进行所有数学计算。
为此,此包在底层依赖于 \Brick\Math\BigInteger
此转换会将值转换为 BigInteger 类。

use OliverNybroe\LighthouseMathScalars\Casts\BigInteger as BigIntegerCast;
use Brick\Math\BigInteger;
use Illuminate\Foundation\Auth\User as Authenticatable;

/**
 * @property BigInteger $gold
 */
class User extends Authenticatable
{
    protected $casts = [
        'gold' => BigIntegerCast::class,
    ];