ivanvoitovych/redis-repository

Redis存储库实现。

v1.1.0 2022-09-17 13:53 UTC

This package is auto-updated.

Last update: 2024-09-17 18:22:57 UTC


README

Redis存储库实现。

使用示例

use RedisDb\Models\BaseEntity;

class BlogPost extends BaseEntity
{
    public string $Title;
    public string $SeoTitle;
    public string $Body;
    public string $Author;
    public int $DisplayOrder = 0;
    public bool $Published = false;
    public int $Group = 0;
}
use RedisDb\Models\BaseEntityDbMap;

class BlogPostDbMap extends BaseEntityDbMap
{
    public const ORDER_BY_ORDER = 'DisplayOrder';

    public const PROPERTY_Published = 'Published';
    public const PROPERTY_Group = 'Group';
    public const PROPERTY_SeoTitle = 'SeoTitle';

    static array $Indexes = [
        'SeoTitle_UX' => [
            'Unique' => true,
            'Properties' => [self::PROPERTY_SeoTitle]
        ],
        'Published_IX' => [
            'Unique' => false,
            'Properties' => [self::PROPERTY_Published]
        ],
        'Published-Group_IX' => [
            'Unique' => false,
            'Properties' => [
                self::PROPERTY_Group,
                self::PROPERTY_Published
            ]
        ]
    ];

    static array $Positions = [
        self::ORDER_BY_ORDER => [
            'Properties' => [self::ORDER_BY_ORDER]
        ]
    ];
}
$mapper = new StdObjectMapper();
$connector = new RedisConnector();

$repository = new BaseRepository($connector, $mapper, BlogPost::class, BlogPostDbMap::class);

$blog = new BlogPost();
$blog->Author = 'Miki the black cat';
$blog->Body = 'body sample';
$blog->DisplayOrder = $i;
$blog->Group = $i % 20;
$blog->Published = $i % 2 === 1;
$blog->SeoTitle = "blog-number-$i"; // unique
$blog->Title = "Blog $i";
$repository->Create($blog);

$repository->Update($blog);

$repository->Delete($blog);

$repository->GetList(1, 2, BaseEntityDbMap::ORDER_BY_CreatedOn, 1);
$repository->GetList(1, 2, BlogPostDbMap::ORDER_BY_ORDER, 0);

$repository->GetByKeys(
    [
        BlogPostDbMap::PROPERTY_Group => $group,
        BlogPostDbMap::PROPERTY_Published => $group % 2 === 1
    ],
    1,
    5,
    1,
    BlogPostDbMap::ORDER_BY_ORDER
    );

许可证

MIT许可证

版权所有 (c) 2022-至今 Ivan Voitovych

请参阅LICENSE以获取许可证文本

法律

通过提交拉取请求,您放弃对Viewi项目提交的任何权利或要求,并将这些更改的版权授予Ivan Voitovych。

如果您无法或不想转让这些权利(您的雇主的工作合同可能不允许这样做),您不应提交PR。打开一个问题,其他人可以完成这项工作。

这是法律上的一种说法,“如果您向我们提交PR,那么代码就变成我们的。” 99.9% 的情况下,这正是您的意图;我们希望这不会让您害怕贡献。