using EntitlementDAL.DTOs; namespace EntitlementBLL.Demo; /// Thread 3 (Demo/DemoDB, tracker §49) — admin authoring for MDEMOVARIANT/ /// MDEMOPOOLINSTANCE. Distinct from IDemoSessionBLL (session lifecycle) — this is the catalog /// an ops/CS person registers ONCE per demo "flavor" (industry x geography x period, or a /// specific feature showcase) and its pre-provisioned pool instances, previously only reachable /// via direct SQL (no SL endpoint/FE existed). public interface IDemoCatalogBLL { Task CreateVariantAsync(DemoVariantDTO dto, CancellationToken ct); Task GetVariantByIdAsync(int demoVariantId, CancellationToken ct); Task> GetVariantListAsync(CancellationToken ct); /// Updates an existing variant's editable fields — VariantCode/DemoVariantId/audit /// fields never change once created (mirrors VARIANT_UPDATE's own scope exactly). Task UpdateVariantAsync(DemoVariantDTO dto, CancellationToken ct); /// Registers an already-provisioned physical database (SwClientDatabaseId — created /// separately via the real SqlWorkbench ClientProvisioning pipeline, §11/§31) as one more /// pooled instance backing a variant. Does not itself provision anything. Task CreatePoolInstanceAsync(DemoPoolInstanceDTO dto, CancellationToken ct); Task> GetPoolInstancesByVariantAsync(int demoVariantId, CancellationToken ct); /// Corrects which physical database (SwClientDatabaseId) or local demo-tenant /// (LocalClientId) a pool instance points at. Never reassigns DemoVariantId or PoolState — /// those have their own dedicated lifecycle methods (checkout/reset), not this one. Task UpdatePoolInstanceAsync(DemoPoolInstanceDTO dto, CancellationToken ct); }