packages/sql-catalog/src/Core/Extension/Model/ModelProviderInterface.php
1<?php
2
3declare(strict_types=1);
4
5namespace SqlCatalog\Core\Extension\Model;
6
7use SqlCatalog\Core\Extension\ExtensionInterface;
8
9/**
10 * An optional extension capability for source-level call and statement models.
11 *
12 * @visibility public
13 *
14 * @example Registering an extension with optional source models
15 * $extension = new class implements \SqlCatalog\Core\Extension\Model\ModelProviderInterface {
16 * public function name(): string { return 'example'; }
17 * public function description(): string { return 'Application SQL functions'; }
18 * public function sinks(): array { return []; }
19 * public function globals(): array { return []; }
20 * public function models(\SqlCatalog\Core\Extension\Model\ModelContext $context): \SqlCatalog\Core\Extension\Model\ModelSet {
21 * return new \SqlCatalog\Core\Extension\Model\ModelSet();
22 * }
23 * };
24 * $registry = new \SqlCatalog\Core\Extension\ExtensionRegistry([$extension]);
25 * count($registry->modelProvidersOf(['example'])) // => 1
26 */
27interface ModelProviderInterface extends ExtensionInterface
28{
29 /**
30 * Creates models for one analysis, without retaining state between runs.
31 */
32 public function models(ModelContext $context): ModelSet;
33}
34