namespace CMSDAL.Query.DataSource; public static class DataSourceQB { // FE admin screen list view — own tenant's rows plus system-wide (-1) reusable ones. public const string GET_LIST = @" SELECT ds.DATASOURCEID AS DataSourceId, ds.DATASOURCECODE AS DataSourceCode, ds.DATASOURCENAME AS DataSourceName, ds.DATASOURCEDESCRIPTION AS DataSourceDescription, ds.ENDPOINTTEMPLATE AS EndpointTemplate, ds.HTTPMETHOD AS HttpMethod, ds.AUTHMODE AS AuthMode, ds.AUTHHEADERNAME AS AuthHeaderName, ds.VAULTSECRETPATH AS VaultSecretPath, ds.CACHETTLSECONDS AS CacheTtlSeconds, ds.RESPONSEMAPPINGJSON AS ResponseMappingJson, ds.STATUS AS Status, ds.TENANTID AS TenantId, ds.CREATEDBYID AS CreatedById, ds.CREATEDON AS CreatedOn, ds.MODIFIEDBYID AS ModifiedById, ds.MODIFIEDON AS ModifiedOn FROM DBO.MCMSDATASOURCE ds WHERE ds.STATUS = 1 AND (ds.TENANTID = @TenantId OR ds.TENANTID = -1) ORDER BY ds.DATASOURCENAME"; public const string GET_BY_ID = @" SELECT ds.DATASOURCEID AS DataSourceId, ds.DATASOURCECODE AS DataSourceCode, ds.DATASOURCENAME AS DataSourceName, ds.DATASOURCEDESCRIPTION AS DataSourceDescription, ds.ENDPOINTTEMPLATE AS EndpointTemplate, ds.HTTPMETHOD AS HttpMethod, ds.AUTHMODE AS AuthMode, ds.AUTHHEADERNAME AS AuthHeaderName, ds.VAULTSECRETPATH AS VaultSecretPath, ds.CACHETTLSECONDS AS CacheTtlSeconds, ds.RESPONSEMAPPINGJSON AS ResponseMappingJson, ds.STATUS AS Status, ds.TENANTID AS TenantId, ds.CREATEDBYID AS CreatedById, ds.CREATEDON AS CreatedOn, ds.MODIFIEDBYID AS ModifiedById, ds.MODIFIEDON AS ModifiedOn FROM DBO.MCMSDATASOURCE ds WHERE ds.DATASOURCEID = @DataSourceId AND (ds.TENANTID = @TenantId OR ds.TENANTID = -1)"; // Same "own tenant OR system-wide (-1)" resolution as GET_BY_ID — a data source can be a // tenant's own custom integration or a reusable platform-provided one (mirrors // DesignSystemQB.GET_BY_ID's precedent). public const string GET_BY_CODE = @" SELECT ds.DATASOURCEID AS DataSourceId, ds.DATASOURCECODE AS DataSourceCode, ds.DATASOURCENAME AS DataSourceName, ds.DATASOURCEDESCRIPTION AS DataSourceDescription, ds.ENDPOINTTEMPLATE AS EndpointTemplate, ds.HTTPMETHOD AS HttpMethod, ds.AUTHMODE AS AuthMode, ds.AUTHHEADERNAME AS AuthHeaderName, ds.VAULTSECRETPATH AS VaultSecretPath, ds.CACHETTLSECONDS AS CacheTtlSeconds, ds.RESPONSEMAPPINGJSON AS ResponseMappingJson, ds.STATUS AS Status, ds.TENANTID AS TenantId, ds.CREATEDBYID AS CreatedById, ds.CREATEDON AS CreatedOn, ds.MODIFIEDBYID AS ModifiedById, ds.MODIFIEDON AS ModifiedOn FROM DBO.MCMSDATASOURCE ds WHERE ds.DATASOURCECODE = @DataSourceCode AND (ds.TENANTID = @TenantId OR ds.TENANTID = -1) AND ds.STATUS = 1"; public const string SAVE_DATASOURCE = @" INSERT INTO DBO.MCMSDATASOURCE (DATASOURCECODE, DATASOURCENAME, DATASOURCEDESCRIPTION, ENDPOINTTEMPLATE, HTTPMETHOD, AUTHMODE, AUTHHEADERNAME, VAULTSECRETPATH, CACHETTLSECONDS, RESPONSEMAPPINGJSON, STATUS, TENANTID, CREATEDBYID, CREATEDON, MODIFIEDBYID, MODIFIEDON) VALUES (@DataSourceCode, @DataSourceName, @DataSourceDescription, @EndpointTemplate, @HttpMethod, @AuthMode, @AuthHeaderName, @VaultSecretPath, @CacheTtlSeconds, @ResponseMappingJson, @Status, @TenantId, @CreatedById, @CreatedOn, @ModifiedById, @ModifiedOn); SELECT SCOPE_IDENTITY();"; public const string UPDATE_DATASOURCE = @" UPDATE DBO.MCMSDATASOURCE SET DATASOURCENAME = @DataSourceName, DATASOURCEDESCRIPTION = @DataSourceDescription, ENDPOINTTEMPLATE = @EndpointTemplate, HTTPMETHOD = @HttpMethod, AUTHMODE = @AuthMode, AUTHHEADERNAME = @AuthHeaderName, VAULTSECRETPATH = @VaultSecretPath, CACHETTLSECONDS = @CacheTtlSeconds, RESPONSEMAPPINGJSON = @ResponseMappingJson, STATUS = @Status, MODIFIEDBYID = @ModifiedById, MODIFIEDON = @ModifiedOn WHERE DATASOURCEID = @DataSourceId AND (TENANTID = @TenantId OR TENANTID = -1)"; }