namespace CMSDAL.Query.BlockDataBinding; public static class BlockDataBindingQB { // Not filtered by caller-claimed TenantId — SiteDocumentBLL calls this once per block while // walking a tree already resolved under the site's own rebased tenant login (see // SiteDocumentBLL.RebaseTenant), so the ambient login's ClientId is already correct there; // for the direct CRUD endpoints (Get/SaveBlockDataBinding) the BLL enforces tenant ownership // itself via CrossTenantGuard against the owning ContentBlock, same pattern as // ContentContainerBLL/ContentBlockBLL. public const string GET_BY_CONTENTBLOCKID = @" SELECT bdb.BLOCKDATABINDINGID AS BlockDataBindingId, bdb.CONTENTBLOCKID AS ContentBlockId, bdb.DATASOURCEID AS DataSourceId, bdb.BINDINGMODE AS BindingMode, bdb.PARAMSJSON AS ParamsJson, bdb.STATUS AS Status, bdb.TENANTID AS TenantId, bdb.CREATEDBYID AS CreatedById, bdb.CREATEDON AS CreatedOn, bdb.MODIFIEDBYID AS ModifiedById, bdb.MODIFIEDON AS ModifiedOn FROM DBO.TCMSBLOCKDATABINDING bdb WHERE bdb.CONTENTBLOCKID = @ContentBlockId AND bdb.STATUS = 1"; public const string SAVE_BLOCKDATABINDING = @" INSERT INTO DBO.TCMSBLOCKDATABINDING (CONTENTBLOCKID, DATASOURCEID, BINDINGMODE, PARAMSJSON, STATUS, TENANTID, CREATEDBYID, CREATEDON, MODIFIEDBYID, MODIFIEDON) VALUES (@ContentBlockId, @DataSourceId, @BindingMode, @ParamsJson, @Status, @TenantId, @CreatedById, @CreatedOn, @ModifiedById, @ModifiedOn); SELECT SCOPE_IDENTITY();"; public const string UPDATE_BLOCKDATABINDING = @" UPDATE DBO.TCMSBLOCKDATABINDING SET DATASOURCEID = @DataSourceId, BINDINGMODE = @BindingMode, PARAMSJSON = @ParamsJson, STATUS = @Status, MODIFIEDBYID = @ModifiedById, MODIFIEDON = @ModifiedOn WHERE BLOCKDATABINDINGID = @BlockDataBindingId AND TENANTID = @TenantId"; }