001package gudusoft.gsqlparser.catalog.runtime;
002
003import gudusoft.gsqlparser.catalog.input.model.UnifiedCatalogModel;
004
005/**
006 * Static utility helpers for working with {@link CatalogProvider}s. Counterpart to
007 * {@code gudusoft.gsqlparser.catalog.input.CatalogInputReaders} on the input side.
008 */
009public final class CatalogProviders {
010
011    private CatalogProviders() {
012        // Static utility — no instances.
013    }
014
015    /**
016     * Create an in-memory provider seeded with the given snapshot, opened and ready
017     * to serve {@code snapshot(...)} calls.
018     */
019    public static CatalogProvider inMemory(CatalogSnapshot snapshot) {
020        InMemoryCatalogProvider p = new InMemoryCatalogProvider(snapshot);
021        p.open(CatalogProviderConfig.empty());
022        return p;
023    }
024
025    /**
026     * Create a model-backed provider, opened and ready to serve {@code snapshot(...)}
027     * calls. The provider materializes the model into a snapshot up front.
028     */
029    public static CatalogProvider modelBacked(UnifiedCatalogModel model) {
030        ModelBackedCatalogProvider p = new ModelBackedCatalogProvider(model);
031        p.open(CatalogProviderConfig.empty());
032        return p;
033    }
034}