https://github.com/kununu/projections
https://github.com/kununu/projections
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/kununu/projections
- Owner: kununu
- License: mit
- Created: 2019-07-17T12:35:31.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-08T07:05:11.000Z (3 months ago)
- Last Synced: 2025-03-28T16:11:09.765Z (3 months ago)
- Language: PHP
- Size: 98.6 KB
- Stars: 1
- Watchers: 6
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
# Kununu Projections
Projections are a temporary storage and are a way to access data faster than fetching it from a regular storage (e.g. getting data from a cache vs from the database).
Data needs to be projected first so that its projection can be accessed without the need to access the actual source of truth, which is usually a slower process.
Projections have a short lifetime, and are not updated automatically if data in source of truth changes. So they need to be frequently refreshed.
## Overview
This repository contains the interfaces to implement projections logic.
It also includes an implementation of the projection over the Symfony's Tag Aware Cache Pool component, which can use several cache providers, like Memcached, Redis or simply process memory, amongst others.
## Installation
### Require this library to your project
```bash
composer require kununu/projections
```### If you wish to have projections implemented via Symfony's Tag Aware Cache Pool, you must also request the required packages for that implementation
```bash
composer require symfony/cache
```Also you will need to include a serializer (e.g. JMSSerializer)
```bash
composer require jms/serializer
```(Or, in this example, if you want to use this library on a Symfony App you may want to require the `jms/serializer-bundle` instead of `jms/serializer`)
```bash
composer require jms/serializer-bundle
```## Concepts
- [Cache Cleaner](docs/cache-cleaner.md)
- [Projection Item](docs/projection-item.md)
- [Provider](docs/provider.md)
- [Repository](docs/repository.md)
- [Serialization](docs/serialization.md)## Integrations
- [Symfony Integrations](docs/symfony.md)------------------------------

[](https://sonarcloud.io/dashboard?id=kununu_projections)