1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-05 10:54:04 +00:00
Commit graph

770 commits

Author SHA1 Message Date
PHP CS Fixer
3bfef9e2c4 Fix code style (php-cs-fixer) 2023-06-05 14:36:19 +00:00
lukinovec
cc28d1813a Move reusable methods to Tenancy, get rid of tenancy.models.rls 2023-06-05 16:35:16 +02:00
lukinovec
bad5c693ab Add config('tenancy.database.rls') 2023-06-05 16:33:26 +02:00
lukinovec
cb775a9fba Improve RLS policy creation command 2023-06-05 13:43:21 +02:00
PHP CS Fixer
9f166a59a4 Fix code style (php-cs-fixer) 2023-06-05 10:04:15 +00:00
lukinovec
983e4c1f84 Get RLS models from a temporary tenant 2023-06-05 12:03:48 +02:00
lukinovec
5754f8bdc4 Get central connection name from the config 2023-06-05 10:08:48 +02:00
lukinovec
12b36f407d Rename bootstrapper, improve docblock 2023-06-01 10:26:39 +02:00
lukinovec
5b07afcc33 Improve comment 2023-05-31 13:44:22 +02:00
lukinovec
ac6bf3651a Delete redundant str($x)->toString() 2023-05-31 13:33:37 +02:00
lukinovec
61519ecec3 Wrap makeModelUseRls() in transaction 2023-05-31 07:53:21 +02:00
lukinovec
3ef1c38414 Delete single-call DB transactions 2023-05-31 07:38:43 +02:00
lukinovec
8ccc27e8c3 Rename bootstrapper 2023-05-29 11:15:38 +02:00
lukinovec
47fe86c21e Use DB transactions 2023-05-24 14:57:06 +02:00
lukinovec
ea9690f915 Handle phpstan errors 2023-05-24 14:47:17 +02:00
lukinovec
ae568e1227 Reduce nesting, rename methods 2023-05-24 14:29:30 +02:00
PHP CS Fixer
526002c7b2 Fix code style (php-cs-fixer) 2023-05-24 10:59:36 +00:00
lukinovec
0a6c1b69ea Update RLS policy command (use DB transactions, improve nesting) 2023-05-24 12:59:12 +02:00
lukinovec
0991f62aa5 Add info to bootstrapper's docblock 2023-05-24 12:32:36 +02:00
lukinovec
8eb9e5f19b Put DB operations inside transactions 2023-05-24 12:02:46 +02:00
lukinovec
6e2b56237f Add docblock to PostgresTenancyBootstrapper 2023-05-24 11:04:57 +02:00
lukinovec
2461f76e59 Use $tenant->database()->getUsername(), default to $tenant->getTenantKey() 2023-05-24 10:50:03 +02:00
lukinovec
5aed290de6 Delete complete todos 2023-05-23 10:28:59 +02:00
lukinovec
fcb54cbe8e Delete the UUID-specific logic, make RLS possible with non-UUID primary keys 2023-05-10 15:36:07 +02:00
lukinovec
253061730e Remove UUID constraint from RLS policy 2023-05-10 12:48:06 +02:00
PHP CS Fixer
c41559fd3d Fix code style (php-cs-fixer) 2023-05-10 03:54:12 +00:00
lukinovec
3449f19748 Fix PHPStan errors 2023-05-10 05:52:50 +02:00
PHP CS Fixer
4f9147bf81 Fix code style (php-cs-fixer) 2023-05-09 14:07:40 +00:00
lukinovec
17d779e130 Scope queries using Postgres RLS (WIP) 2023-05-09 16:07:06 +02:00
lukinovec
3c098dc78e Add Postgres bootstrapper 2023-05-09 15:13:10 +02:00
lukinovec
9ad183d296 Use tenantKeyColumn() instead of the config 2023-04-28 14:27:55 +02:00
lukinovec
b90b635f90 Add todos 2023-04-28 14:23:22 +02:00
PHP CS Fixer
483630897e Fix code style (php-cs-fixer) 2023-04-27 11:48:25 +00:00
lukinovec
a5d004132c Delete temp action, improve tests 2023-04-27 13:47:56 +02:00
lukinovec
2745f824aa Fix command 2023-04-27 13:44:45 +02:00
PHP CS Fixer
d14eb8609b Fix code style (php-cs-fixer) 2023-04-26 16:10:57 +00:00
lukinovec
e169cf49fa Create and drop schema in tests 2023-04-26 18:10:19 +02:00
PHP CS Fixer
4eea9f1031 Fix code style (php-cs-fixer) 2023-04-26 13:34:54 +00:00
lukinovec
034c284303 wip 2023-04-26 15:34:27 +02:00
lukinovec
562d507482 Test if policies get created correctly using action 2023-04-26 15:25:50 +02:00
lukinovec
9226a1ec6c Fix syntax error 2023-04-26 12:48:04 +02:00
lukinovec
44acaadb6e Improve command for creating RLS policies 2023-04-26 12:43:45 +02:00
lukinovec
7f1f594809 Merge branch 'master' of github.com:archtechx/tenancy into add-postgres-rls-support 2023-04-25 14:25:01 +02:00
lukinovec
ae25e25715 Fix job & test 2023-04-25 12:33:29 +02:00
Abrar Ahmad
bd9bbe8b41
Cache prefix mode for separating tenant caches (#1014)
* cache prefix

* prefix cache bootstrapper and tests

* remove comment

* DI app

* cache prefix base from config

* Create PrefixCacheBootstrapperTest.php

* remove `null` check

* fix phpstan error

* Update PrefixCacheTenancyBootstrapper.php

* Update PrefixCacheBootstrapperTest.php

* add comments

* Update PrefixCacheTenancyBootstrapper.php

* Update PrefixCacheBootstrapperTest.php

* Update config.php

* test names grammar

* user `getTenantKey` method

* assert tenants' data is accessible using the prefix from the central context

* remove unused line

* use proper DI

* build prefix using original prefix

* fix prefix test according to prefix changes

* fix test

* CacheManager dependency injection test

* CacheService class as singleton

* introduce second tenant in test

* use Repository in service class DI

* Update CacheAction.php

* Rename CacheAction to CacheService

* Update prefix bootstrapper and test (`setStore()` in CacheManager and Repository needed)

* Add macro

* Fix code style (php-cs-fixer)

* Simplify cache store refreshing

* Make Tenancy override CacheManager

* Update CacheManager, add refreshStore()

* Fix code style (php-cs-fixer)

* Uncomment cache tagging

* Revert condition in CacheManager to avoid excessive nesting

* Move `Cache::macro()` to a slightly more appropriate place

* Fix code style (php-cs-fixer)

* Use better class for the macro

* Toggle cache tags

* Make CacheManager::$addTags default to `true`

* Add changes to PR to Laravel

* Fix code style (php-cs-fixer)

* Revert changes, add comment

* Add test

* Make `$cache` non-nullable

Co-authored-by: Samuel Štancl <samuel@archte.ch>

* Add and test `nonTenantCacheDrivers`

* Add nonTenantCacheDrivers check

* Test that the prefix stays the same

* Change nonTenantCacheDrivers to tenantCacheStores

* Remove redundant CacheManager extend() call

* Make 'redis' the only tenant cache store in beforeEach, test that tenantCacheStores works

* Remove unused import, change word

* Make CacheService a singleton in a test

* Update test name

* Remove group('prefix')

* Rename CacheManagerService

* Improve specific cache store in a service test

* Improve comment

* Improve tests

* Use my Laravel fork

* Fix code style (php-cs-fixer)

* Downgrade Laravel

* Upgrade Laravel

* Hint Repository implementation instead of contract

* Fix types

* Fix code style (php-cs-fixer)

* Fix test

* Use Laravel fork in ci.yml

* use dev-master before our changes are released in L10

* remove laravel fork from repositories

* use 10.x-dev instead of master

* remove L9 support

* 10.x-dev (fix conflict resolution)

* use the laravel version from the ci matrix for the phpstan job as well

* Revert "use the laravel version from the ci matrix for the phpstan job as well"

This reverts commit 5f3079d2ff.

* Test that non-default stores get prefixed too

* Use new Laravel release, remove L9 support

* Complete L9 support removal

* Specify 10.1.1 as the minimal Laravel version in ci.yml

* Use 10.x-dev

* Prefix all cache stores specified in `$tenantCacheStores`

* Update Laravel

* Use tmpfs in docker-compose

* Add customizing cache store prefixes

* Test cache prefixing customization

* Fix code style (php-cs-fixer)

* Update ci.yml

* Delete tmpfs from docker-compose.yml (there were no benefits)

* Use default prefix generator inline, delete the 'default' key logic

* Fix original prefix logic

* Update tests

* Delete CacheTenancyBootstrapper

* Reset static properties in afterEach

* Use `$this->config` instead of `config()`

* Disable cache tagging by default, add CacheTagBootstrapper

* Fix code style (php-cs-fixer)

* Rename bootstrapper

* Improve CacheManager

* Move logic from separate method to __call

* Make original prefixes customizable

* Add info in comment

* Add defaultPrefix property

* Use `$this->app` instead of `app()`

* Rename bootstrapper

* Fix code style (php-cs-fixer)

* Use a single original prefix

* Update prefix generator logic + tests

* Correct `$addTags` reset in a test

* Update cache tests so that both prefixing and tagging is covered

* Simplify cache tests

* Delete afterEach

* Small testing improvements

* Set `cache.default` in beforeEach

* Update cache prefixing and tests

* Add assertion

* Refactor assertion

* Refactor assertions

* Delete TTL from cache put calls

* Add re-initialization cache assertion

* Assert that cache is null from the beginning

* Merge the tenantCacheStores tests

* Fix formatting

* Improve test name

* Improve tests

* Add cache manager config key

* Fix code style (php-cs-fixer)

* Update defaulting test

* Add todo

* Update comments

* Extract duplicate assertions into a closure

* Update comment

* Add assertions + comment

* Delete redundant config put calls

* Use `tenancy.cache.manager` config instead of `Stancl\Tenancy\CacheManager`

* Change setting to assertion, add comment

* Inline variable & config key assignment

* Delete `cache.default` assertion

* Override cache manager only in CacheTagsBootstrapper

* Fix code style (php-cs-fixer)

* Prefix both drivers by default, add assertions for the second driver where missing

* Clean up global state (static properties) in before/afterEach

* Add docblock to tags bootstrapper

* Delete extra dependency

* Add `illuminate/support` dependency back

* Use `$addTags` approach again

* Fix code style (php-cs-fixer)

* Revert "Fix code style (php-cs-fixer)"

This reverts commit ea805fa231.

* Revert "Use `$addTags` approach again"

This reverts commit 8f5a4e4eb6.

* Add commented CacheTagsBootstrapper with info to the bootstrappers config

* Delete legacy bootstrapper from the bootstrappers config, add info to the bootstrapper's docblock

* Delete "?" from `tenant()?->getTenantKey()

* call generatePrefix() on $bootstrapper

* misc improvements

---------

Co-authored-by: lukinovec <lukinovec@gmail.com>
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
2023-04-24 16:25:51 +02:00
lukinovec
39fe252ef6 Add comment 2023-04-24 13:21:23 +02:00
PHP CS Fixer
20cb3dc647 Fix code style (php-cs-fixer) 2023-04-24 11:20:26 +00:00
lukinovec
eae4d378f7 Swap try/catch for if statements 2023-04-24 13:20:02 +02:00
lukinovec
2d75f185b8 Use Schema::getAllTables() instead of the migration file names 2023-04-24 11:10:06 +02:00
lukinovec
91936bc5ab Fix PHPStan error 2023-04-21 15:36:00 +02:00