1: <?php declare(strict_types=1);
2:
3: namespace Salient\Sync\Db;
4:
5: use Salient\Contract\Core\Pipeline\PipelineInterface;
6: use Salient\Contract\Core\ArrayMapperInterface;
7: use Salient\Contract\Core\ListConformity;
8: use Salient\Contract\Sync\EntitySource;
9: use Salient\Contract\Sync\FilterPolicy;
10: use Salient\Contract\Sync\SyncContextInterface;
11: use Salient\Contract\Sync\SyncEntityInterface;
12: use Salient\Contract\Sync\SyncOperation as OP;
13: use Salient\Core\AbstractBuilder;
14: use Salient\Sync\Support\SyncPipelineArgument;
15: use Salient\Sync\AbstractSyncDefinition;
16: use Closure;
17:
18: /**
19: * A fluent DbSyncDefinition factory
20: *
21: * @method $this operations(array<OP::*> $value) Supported sync operations
22: * @method $this table(?string $value) Set DbSyncDefinition::$Table
23: * @method $this conformity(ListConformity::* $value) Conformity level of data returned by the provider for this entity (see {@see AbstractSyncDefinition::$Conformity})
24: * @method $this filterPolicy(FilterPolicy::*|null $value) Action to take when filters are not claimed by the provider (see {@see AbstractSyncDefinition::$FilterPolicy})
25: * @method $this overrides(array<int-mask-of<OP::*>,Closure(DbSyncDefinition<TEntity,TProvider>, OP::*, SyncContextInterface, mixed...): (iterable<TEntity>|TEntity)> $value) Array that maps sync operations to closures that override other implementations (see {@see AbstractSyncDefinition::$Overrides})
26: * @method $this keyMap(array<array-key,array-key|array-key[]>|null $value) Array that maps keys to properties for entity data returned by the provider (see {@see AbstractSyncDefinition::$KeyMap})
27: * @method $this keyMapFlags(int-mask-of<ArrayMapperInterface::*> $value) Array mapper flags used if a key map is provided
28: * @method $this readFromList(bool $value = true) Perform READ operations by iterating over entities returned by READ_LIST (default: false; see {@see AbstractSyncDefinition::$ReadFromList})
29: * @method $this returnEntitiesFrom(EntitySource::*|null $value) Source of entity data for the return value of a successful CREATE, UPDATE or DELETE operation
30: *
31: * @template TEntity of SyncEntityInterface
32: * @template TProvider of DbSyncProvider
33: *
34: * @extends AbstractBuilder<DbSyncDefinition<TEntity,TProvider>>
35: *
36: * @generated
37: */
38: final class DbSyncDefinitionBuilder extends AbstractBuilder
39: {
40: /**
41: * @internal
42: */
43: protected static function getService(): string
44: {
45: return DbSyncDefinition::class;
46: }
47:
48: /**
49: * The entity being serviced
50: *
51: * @template T of SyncEntityInterface
52: *
53: * @param class-string<T> $value
54: * @return static<T,TProvider>
55: */
56: public function entity(string $value)
57: {
58: /** @var static<T,TProvider> */
59: return $this->withValueB(__FUNCTION__, $value);
60: }
61:
62: /**
63: * The provider servicing the entity
64: *
65: * @template T of DbSyncProvider
66: *
67: * @param T $value
68: * @return static<TEntity,T>
69: */
70: public function provider(DbSyncProvider $value)
71: {
72: /** @var static<TEntity,T> */
73: return $this->withValueB(__FUNCTION__, $value);
74: }
75:
76: /**
77: * Pipeline that maps provider data to a serialized entity, or `null` if mapping is not required
78: *
79: * @template T of SyncEntityInterface
80: *
81: * @param PipelineInterface<mixed[],T,SyncPipelineArgument>|null $value
82: * @return static<T,TProvider>
83: */
84: public function pipelineFromBackend(?PipelineInterface $value)
85: {
86: /** @var static<T,TProvider> */
87: return $this->withValueB(__FUNCTION__, $value);
88: }
89:
90: /**
91: * Pipeline that maps a serialized entity to provider data, or `null` if mapping is not required
92: *
93: * @template T of SyncEntityInterface
94: *
95: * @param PipelineInterface<T,mixed[],SyncPipelineArgument>|null $value
96: * @return static<T,TProvider>
97: */
98: public function pipelineToBackend(?PipelineInterface $value)
99: {
100: /** @var static<T,TProvider> */
101: return $this->withValueB(__FUNCTION__, $value);
102: }
103: }
104: