package catalogapp

import (
	"context"

	"github.com/pingcap-inc/nexuscrm-controlplane/catalogpublication"
)

var schemaStatements = []string{
	`CREATE TABLE IF NOT EXISTS _System_CatalogPublisher (
PublisherId VARCHAR(128) PRIMARY KEY, OwnershipEpoch DECIMAL(20,0) NOT NULL,
State VARCHAR(16) NOT NULL, CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
CONSTRAINT chk_catalog_publisher_state CHECK (State IN ('ACTIVE','REVOKED')))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogPublisherKey (
PublisherId VARCHAR(128) NOT NULL, KeyId VARCHAR(128) NOT NULL, Algorithm VARCHAR(32) NOT NULL,
PublicKey VARBINARY(4096) NOT NULL, ValidFrom DATETIME(6) NOT NULL, ValidUntil DATETIME(6) NOT NULL,
State VARCHAR(16) NOT NULL, CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
PRIMARY KEY (PublisherId, KeyId),
CONSTRAINT chk_catalog_publisher_key_state CHECK (State IN ('ACTIVE','REVOKED')),
CONSTRAINT chk_catalog_publisher_key_window CHECK (ValidUntil > ValidFrom))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogPublisherTrustTransition (
OperationId VARCHAR(255) PRIMARY KEY, PublisherId VARCHAR(128) NOT NULL,
ExpectedOwnershipEpoch DECIMAL(20,0) NOT NULL, ResultOwnershipEpoch DECIMAL(20,0) NOT NULL,
PreviousTrustDigest VARCHAR(71) NOT NULL, ActiveTrustDigest VARCHAR(71) NOT NULL,
CreatedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_publisher_transition_epoch (PublisherId, ResultOwnershipEpoch))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppIdentity (
AppId VARCHAR(128) PRIMARY KEY, PublisherId VARCHAR(128) NOT NULL,
OwnershipEpoch DECIMAL(20,0) NOT NULL, CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
INDEX idx_catalog_app_publisher (PublisherId))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppTransferAudit (
Id CHAR(36) PRIMARY KEY, AppId VARCHAR(128) NOT NULL, OldPublisherId VARCHAR(128) NOT NULL,
NewPublisherId VARCHAR(128) NOT NULL, OwnershipEpoch DECIMAL(20,0) NOT NULL,
AuditDigest VARCHAR(71) NOT NULL, CreatedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_app_transfer_epoch (AppId, OwnershipEpoch))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppRelease (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL,
PublisherId VARCHAR(128) NOT NULL, SemanticVersion VARCHAR(255) NOT NULL,
MetadataBundleDigest VARCHAR(71) NOT NULL, CanonicalManifest JSON NOT NULL, CanonicalBundle JSON NOT NULL,
CanonicalizationProfile VARCHAR(64) NOT NULL, ArtifactMediaType VARCHAR(255) NOT NULL,
AdmissionKind VARCHAR(32) NOT NULL DEFAULT 'SIGNED_PUBLISHER',
AttestationKeyId VARCHAR(128) NULL, AttestationDigest VARCHAR(71) NULL, AttestationVerifiedAt DATETIME(6) NULL,
CreatedDate DATETIME(6) NOT NULL, PRIMARY KEY (AppId, AppReleaseDigest),
UNIQUE KEY ux_catalog_app_semver (AppId, SemanticVersion),
CONSTRAINT chk_catalog_app_release_admission CHECK (
(AdmissionKind = 'SIGNED_PUBLISHER' AND AttestationKeyId IS NOT NULL AND AttestationDigest IS NOT NULL AND AttestationVerifiedAt IS NOT NULL) OR
(AdmissionKind = 'STOPPED_SOURCE_NON_PROMOTABLE' AND AttestationKeyId IS NULL AND AttestationDigest IS NULL AND AttestationVerifiedAt IS NULL)))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppReleaseArtifactReceipt (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL,
CanonicalAttestation LONGBLOB NOT NULL,
VerificationKeyAlgorithm VARCHAR(32) NOT NULL, VerificationPublicKey VARBINARY(4096) NOT NULL,
VerificationKeyValidFrom DATETIME(6) NOT NULL, VerificationKeyValidUntil DATETIME(6) NOT NULL,
CreatedDate DATETIME(6) NOT NULL,
PRIMARY KEY (AppId, AppReleaseDigest),
CONSTRAINT chk_catalog_app_release_artifact_receipt_key_window CHECK (VerificationKeyValidUntil > VerificationKeyValidFrom))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppReleaseSourceReceipt (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL,
ReceiptSchema VARBINARY(64) NOT NULL, SourceRepository VARBINARY(1024) NOT NULL,
SourceCommit VARBINARY(40) NOT NULL, PackageContentDigest VARCHAR(71) NOT NULL,
PromotionDisposition VARBINARY(32) NOT NULL, ReceiptDigest VARCHAR(71) NOT NULL,
CreatedDate DATETIME(6) NOT NULL, PRIMARY KEY (AppId, AppReleaseDigest),
CONSTRAINT chk_catalog_app_release_source_disposition CHECK (PromotionDisposition = 'NON_PROMOTABLE'))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppReleaseDependency (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL, Alias VARCHAR(63) NOT NULL,
DependencyAppId VARCHAR(128) NOT NULL, MinimumVersionInclusive VARCHAR(255) NOT NULL,
MaximumVersionExclusive VARCHAR(255) NOT NULL, RequiredCapabilities JSON NOT NULL,
PRIMARY KEY (AppId, AppReleaseDigest, Alias))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppReleaseNamespace (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL, NamespaceId VARCHAR(128) NOT NULL,
PRIMARY KEY (AppId, AppReleaseDigest, NamespaceId))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppReleaseCapability (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL, CapabilityId VARCHAR(128) NOT NULL,
Kind VARCHAR(32) NOT NULL, HandlerRef VARCHAR(128) NULL, RequiredRuntimeCapabilities JSON NOT NULL,
PRIMARY KEY (AppId, AppReleaseDigest, CapabilityId))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppReleaseComponent (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL, ComponentId VARCHAR(71) NOT NULL,
NamespaceId VARCHAR(128) NOT NULL, ComponentKind VARCHAR(128) NOT NULL, BusinessKey VARCHAR(255) NOT NULL,
DefinitionVersion DECIMAL(20,0) NOT NULL, ContentDigest VARCHAR(71) NOT NULL, CanonicalBehavior LONGBLOB NOT NULL,
PRIMARY KEY (AppId, AppReleaseDigest, ComponentId),
UNIQUE KEY ux_catalog_component_business_key (AppId, AppReleaseDigest, NamespaceId, ComponentKind, BusinessKey))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppLayoutBundleSlot (
AppId VARCHAR(128) NOT NULL, LocalComponentKey VARCHAR(71) NOT NULL,
DeclarationComponentId VARCHAR(71) NOT NULL, NamespaceId VARCHAR(128) NOT NULL,
HeadDefinitionVersion DECIMAL(20,0) NOT NULL, HeadRevisionDigest VARCHAR(71) NOT NULL,
CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
PRIMARY KEY (AppId, LocalComponentKey),
UNIQUE KEY ux_catalog_app_layout_slot_declaration (AppId, DeclarationComponentId))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppLayoutBundleSlotVersion (
AppId VARCHAR(128) NOT NULL, LocalComponentKey VARCHAR(71) NOT NULL,
DefinitionVersion DECIMAL(20,0) NOT NULL, RevisionDigest VARCHAR(71) NOT NULL,
TargetComponentId VARCHAR(71) NOT NULL, PreviousTargetComponentId VARCHAR(71) NULL,
CreatedDate DATETIME(6) NOT NULL,
PRIMARY KEY (AppId, LocalComponentKey, DefinitionVersion),
UNIQUE KEY ux_catalog_app_layout_slot_revision (AppId, LocalComponentKey, RevisionDigest))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppReleaseLayoutBundleSlot (
AppId VARCHAR(128) NOT NULL, AppReleaseDigest VARCHAR(71) NOT NULL,
LocalComponentKey VARCHAR(71) NOT NULL, DefinitionVersion DECIMAL(20,0) NOT NULL,
CreatedDate DATETIME(6) NOT NULL,
PRIMARY KEY (AppId, AppReleaseDigest, LocalComponentKey),
INDEX idx_catalog_app_release_layout_slot_version (AppId, LocalComponentKey, DefinitionVersion))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppInstallation (
AppInstallationId CHAR(36) PRIMARY KEY, OrgId VARCHAR(255) NOT NULL, AppId VARCHAR(128) NOT NULL,
State VARCHAR(32) NOT NULL, ActiveReleaseDigest VARCHAR(71) NULL, CandidateReleaseDigest VARCHAR(71) NULL,
LastKnownGoodReleaseDigest VARCHAR(71) NULL, CatalogRevision DECIMAL(20,0) NOT NULL,
ActivationEpoch DECIMAL(20,0) NOT NULL, ActiveOperationId CHAR(36) NULL,
ActiveAuthorizedWorkloads JSON NULL, CandidateAuthorizedWorkloads JSON NULL,
ActiveGrantedCapabilities JSON NULL, CandidateGrantedCapabilities JSON NULL,
ActiveResolvedDependencies JSON NULL, CandidateResolvedDependencies JSON NULL, LiveAppKey CHAR(64) NULL,
CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_live_app (LiveAppKey), INDEX idx_catalog_installation_org (OrgId, State),
CONSTRAINT chk_catalog_installation_state CHECK (State IN ('PREPARING','ACTIVE','UPGRADING','ROLLING_BACK','REMOVING','FAILED','REMOVED')))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppOperation (
OperationId CHAR(36) PRIMARY KEY, AppInstallationId CHAR(36) NOT NULL, OrgId VARCHAR(255) NOT NULL, AppId VARCHAR(128) NOT NULL,
Kind VARCHAR(16) NOT NULL, InitiationKind VARCHAR(32) NOT NULL, IdempotencyKey VARCHAR(255) NOT NULL, RequestDigest VARCHAR(71) NOT NULL,
SelectedHandlerCapabilities JSON NULL,
WorkloadHandlerAdmissions JSON NULL,
State VARCHAR(32) NOT NULL, Step VARCHAR(64) NOT NULL, TargetReleaseDigest VARCHAR(71) NULL,
PriorReleaseDigest VARCHAR(71) NULL, ExpectedCatalogRevision DECIMAL(20,0) NOT NULL,
ExpectedSecurityEpoch DECIMAL(20,0) NOT NULL, ExpectedProjectionDigest VARCHAR(71) NOT NULL,
AcknowledgedSecurityEpoch DECIMAL(20,0) NULL, AcknowledgedProjectionDigest VARCHAR(71) NULL,
LastError TEXT NULL, CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_operation_retry (OrgId, AppId, IdempotencyKey),
CONSTRAINT chk_catalog_operation_kind CHECK (Kind IN ('PREPARE','UPGRADE','ROLLBACK','REMOVE')),
CONSTRAINT chk_catalog_operation_initiation CHECK (InitiationKind IN ('DIRECT','LEGACY_CONVERSION')))`,
	`ALTER TABLE _System_CatalogAppOperation
ADD COLUMN IF NOT EXISTS SelectedHandlerCapabilities JSON NULL AFTER RequestDigest`,
	`ALTER TABLE _System_CatalogAppOperation
ADD COLUMN IF NOT EXISTS WorkloadHandlerAdmissions JSON NULL AFTER SelectedHandlerCapabilities`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogAppOperationJournal (
OperationId CHAR(36) NOT NULL, SequenceNumber DECIMAL(20,0) NOT NULL,
Step VARCHAR(64) NOT NULL, State VARCHAR(32) NOT NULL, EvidenceDigest VARCHAR(71) NOT NULL,
CreatedDate DATETIME(6) NOT NULL, PRIMARY KEY (OperationId, SequenceNumber))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogNamespaceReservation (
OrgId VARCHAR(255) NOT NULL, NamespaceId VARCHAR(128) NOT NULL, AppInstallationId CHAR(36) NOT NULL,
AppId VARCHAR(128) NOT NULL, ActiveReleaseDigest VARCHAR(71) NULL, CandidateReleaseDigest VARCHAR(71) NULL,
State VARCHAR(16) NOT NULL,
CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
PRIMARY KEY (OrgId, NamespaceId), INDEX idx_catalog_namespace_installation (AppInstallationId),
CONSTRAINT chk_catalog_namespace_state CHECK (
(State = 'STAGED' AND ActiveReleaseDigest IS NULL AND CandidateReleaseDigest IS NOT NULL) OR
(State = 'ACTIVE' AND ActiveReleaseDigest IS NOT NULL)))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogHandlerBinding (
HandlerBindingId CHAR(36) PRIMARY KEY, OrgId VARCHAR(255) NOT NULL, AppInstallationId CHAR(36) NOT NULL,
AppReleaseDigest VARCHAR(71) NOT NULL, CapabilityId VARCHAR(128) NOT NULL, HandlerRef VARCHAR(128) NOT NULL,
WorkloadId VARCHAR(1024) NOT NULL, ServiceReleaseDigest VARCHAR(71) NOT NULL,
OwnershipEpoch DECIMAL(20,0) NOT NULL, State VARCHAR(16) NOT NULL,
CompatibilityReceiptDigest VARCHAR(71) NOT NULL, NaturalKey CHAR(64) NOT NULL, ActiveKey CHAR(64) NULL,
OperationId CHAR(36) NULL, CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_handler_epoch (NaturalKey), UNIQUE KEY ux_catalog_handler_active (ActiveKey),
CONSTRAINT chk_catalog_handler_state CHECK (State IN ('STAGED','ACTIVE','DRAINING','RETIRED','FAILED')))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogFrontendBinding (
FrontendBindingId CHAR(36) PRIMARY KEY, OrgId VARCHAR(255) NOT NULL, AppInstallationId CHAR(36) NOT NULL,
AppReleaseDigest VARCHAR(71) NOT NULL, FrontendReleaseDigest VARCHAR(71) NOT NULL,
State VARCHAR(16) NOT NULL, CompatibilityReceiptDigest VARCHAR(71) NOT NULL,
ActiveKey CHAR(64) NULL, OperationId CHAR(36) NULL, OperationKey CHAR(64) NULL,
StagingKey CHAR(64) NULL, ActivationPredecessorId CHAR(36) NULL,
CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_frontend_active (ActiveKey), UNIQUE KEY ux_catalog_frontend_staging (StagingKey),
UNIQUE KEY ux_catalog_frontend_operation (OperationKey), INDEX idx_catalog_frontend_operation (OperationId),
CONSTRAINT chk_catalog_frontend_state CHECK (State IN ('STAGED','ACTIVE','DRAINING','RETIRED','FAILED')),
CONSTRAINT chk_catalog_frontend_active_key CHECK (
(State = 'ACTIVE' AND ActiveKey IS NOT NULL) OR (State <> 'ACTIVE' AND ActiveKey IS NULL)),
CONSTRAINT chk_catalog_frontend_attempt CHECK (
(State = 'STAGED' AND OperationId IS NULL AND OperationKey IS NULL AND StagingKey IS NOT NULL) OR
(State = 'STAGED' AND OperationId IS NOT NULL AND OperationKey IS NOT NULL AND StagingKey IS NULL) OR
(State <> 'STAGED' AND StagingKey IS NULL AND (OperationKey IS NULL OR OperationId IS NOT NULL))))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogIntegrationBindingSet (
OperationId CHAR(36) PRIMARY KEY, AppInstallationId CHAR(36) NOT NULL,
BindingSetDigest VARCHAR(71) NOT NULL, BindingCount DECIMAL(20,0) NOT NULL,
CreatedDate DATETIME(6) NOT NULL)`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogConsumerGrantSet (
OperationId CHAR(36) PRIMARY KEY, AppInstallationId CHAR(36) NOT NULL,
GrantSetDigest VARCHAR(71) NOT NULL, GrantCount DECIMAL(20,0) NOT NULL,
CreatedDate DATETIME(6) NOT NULL)`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogConsumerGrant (
ConsumerGrantId CHAR(64) PRIMARY KEY, OrgId VARCHAR(255) NOT NULL,
AppInstallationId CHAR(36) NOT NULL, OperationId CHAR(36) NOT NULL,
AuthorizedWorkloadId VARBINARY(255) NOT NULL, CapabilityId VARBINARY(128) NOT NULL,
CreatedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_consumer_grant_operation
(OperationId, AuthorizedWorkloadId, CapabilityId),
INDEX idx_catalog_consumer_grant_operation (OperationId))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogEffectiveMetadataSet (
OperationId CHAR(36) PRIMARY KEY, OrgId VARCHAR(255) NOT NULL,
AppInstallationId CHAR(36) NOT NULL, CatalogSnapshotDigest VARCHAR(71) NOT NULL,
ComponentSetDigest VARCHAR(71) NOT NULL, ComponentCount DECIMAL(20,0) NOT NULL,
CreatedDate DATETIME(6) NOT NULL)`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogEffectiveMetadataComponent (
EffectiveMetadataComponentId CHAR(64) PRIMARY KEY,
OperationId CHAR(36) NOT NULL, OrgId VARCHAR(255) NOT NULL,
AppInstallationId CHAR(36) NOT NULL, ComponentKind VARBINARY(128) NOT NULL,
ComponentFormatVersion DECIMAL(20,0) NOT NULL, BusinessKey VARBINARY(255) NOT NULL,
ContentDigest VARCHAR(71) NOT NULL, CanonicalBehavior LONGBLOB NOT NULL,
CreatedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_effective_metadata_component
(OperationId, ComponentKind, BusinessKey),
INDEX idx_catalog_effective_metadata_operation (OperationId))`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogIntegrationBinding (
IntegrationBindingId CHAR(64) PRIMARY KEY, OrgId VARCHAR(255) NOT NULL,
AppInstallationId CHAR(36) NOT NULL, OperationId CHAR(36) NOT NULL,
AuthorizedWorkloadId VARBINARY(255) NOT NULL, Kind VARBINARY(64) NOT NULL,
OwnerPack VARBINARY(255) NOT NULL, PackInstallId VARBINARY(255) NOT NULL,
PackPayloadDigest VARBINARY(128) NOT NULL, BusinessKey VARBINARY(255) NOT NULL,
DefinitionVersion DECIMAL(20,0) NOT NULL, CredentialRefs JSON NOT NULL,
CommandKind VARBINARY(255) NULL, CommandPayloadFormatVersion DECIMAL(20,0) NULL,
CommandDefinitionRef VARBINARY(255) NULL, CommandDefinitionVersion VARBINARY(255) NULL,
CreatedDate DATETIME(6) NOT NULL,
INDEX idx_catalog_integration_operation (OperationId))`,
	`ALTER TABLE _System_CatalogIntegrationBinding
ADD COLUMN IF NOT EXISTS CommandKind VARBINARY(255) NULL`,
	`ALTER TABLE _System_CatalogIntegrationBinding
ADD COLUMN IF NOT EXISTS CommandPayloadFormatVersion DECIMAL(20,0) NULL`,
	`ALTER TABLE _System_CatalogIntegrationBinding
ADD COLUMN IF NOT EXISTS CommandDefinitionRef VARBINARY(255) NULL`,
	`ALTER TABLE _System_CatalogIntegrationBinding
ADD COLUMN IF NOT EXISTS CommandDefinitionVersion VARBINARY(255) NULL`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogRemovalGateReceipt (
OperationId CHAR(36) PRIMARY KEY, AppInstallationId CHAR(36) NOT NULL,
DependencyProofDigest VARCHAR(71) NOT NULL, RollbackRetentionProofDigest VARCHAR(71) NOT NULL,
WorkRetentionProofDigest VARCHAR(71) NOT NULL, AuditRetentionProofDigest VARCHAR(71) NOT NULL,
CreatedDate DATETIME(6) NOT NULL)`,
	`CREATE TABLE IF NOT EXISTS _System_CatalogCRMConversionJournal (
MigrationId CHAR(36) PRIMARY KEY, MigrationKey CHAR(64) NOT NULL, LogicalLegacyKey CHAR(64) NOT NULL,
OrgId VARCHAR(255) NOT NULL, LegacyPackInstallId VARCHAR(255) NOT NULL, AppliedPayloadHash VARCHAR(71) NOT NULL,
LegacyAuthorityDigest VARCHAR(71) NOT NULL, TargetAppReleaseDigest VARCHAR(71) NOT NULL,
MappingDigest VARCHAR(71) NOT NULL, MappingVerificationDigest VARCHAR(71) NOT NULL, RequestDigest VARCHAR(71) NOT NULL,
AppInstallationId CHAR(36) NOT NULL, OperationId CHAR(36) NOT NULL,
CreatedDate DATETIME(6) NOT NULL, LastModifiedDate DATETIME(6) NOT NULL,
UNIQUE KEY ux_catalog_crm_migration (MigrationKey), UNIQUE KEY ux_catalog_crm_legacy_incarnation (LogicalLegacyKey),
UNIQUE KEY ux_catalog_crm_operation (OperationId))`,
}

// EnsureSchema creates the shared, non-serving Catalog publication authority
// before the App-owned A1c authority tables. It is not called by any production
// startup path.
func (a *Authority) EnsureSchema(ctx context.Context) error {
	publicationAuthority, err := catalogpublication.New(a.db)
	if err != nil {
		return err
	}
	if err := publicationAuthority.EnsureSchema(ctx); err != nil {
		return err
	}
	for _, statement := range schemaStatements {
		if _, err := a.db.ExecContext(ctx, statement); err != nil {
			return err
		}
	}
	if err := ensureReleaseAdmissionSchema(ctx, a.db); err != nil {
		return err
	}
	return nil
}

func SchemaStatementsForTest() []string {
	result := catalogpublication.SchemaStatementsForTest()
	return append(result, schemaStatements...)
}
