namespace CMSDAL.Query.SitePage; public static class SitePageQB { public const string GET_SITEPAGE = @" SELECT sp.SITEPAGEID AS SitePageId, sp.SITEID AS SiteId, sp.CONTENTID AS ContentId, sp.URLPATH AS UrlPath, sp.PARENTSITEPAGEID AS ParentSitePageId, sp.ISHOMEPAGE AS IsHomePage, sp.SHARINGMODE AS SharingMode, sp.STATUS AS Status, sp.TENANTID AS TenantId, sp.CREATEDBYID AS CreatedById, sp.CREATEDON AS CreatedOn, sp.MODIFIEDBYID AS ModifiedById, sp.MODIFIEDON AS ModifiedOn FROM DBO.TCMSSITEPAGE sp WHERE sp.SITEPAGEID = @SitePageId AND sp.TENANTID = @TenantId"; // Route-resolution primitive GetSiteDocument is built on. Deliberately keyed by // (SiteId, UrlPath) only, not TenantId — the caller (SiteResolverBLL's output) has // already established which tenant the SiteId belongs to; re-filtering by a // caller-claimed TenantId here would defeat the point of anonymous domain resolution. public const string GET_ROUTE_BY_URLPATH = @" SELECT sp.SITEPAGEID AS SitePageId, sp.SITEID AS SiteId, sp.CONTENTID AS ContentId, sp.URLPATH AS UrlPath, sp.ISHOMEPAGE AS IsHomePage FROM DBO.TCMSSITEPAGE sp WHERE sp.SITEID = @SiteId AND sp.URLPATH = @UrlPath AND sp.STATUS = 1"; public const string SAVE_SITEPAGE = @" INSERT INTO DBO.TCMSSITEPAGE (SITEID, CONTENTID, URLPATH, PARENTSITEPAGEID, ISHOMEPAGE, SHARINGMODE, STATUS, TENANTID, CREATEDBYID, CREATEDON, MODIFIEDBYID, MODIFIEDON) VALUES (@SiteId, @ContentId, @UrlPath, @ParentSitePageId, @IsHomePage, @SharingMode, @Status, @TenantId, @CreatedById, @CreatedOn, @ModifiedById, @ModifiedOn); SELECT SCOPE_IDENTITY();"; public const string UPDATE_SITEPAGE = @" UPDATE DBO.TCMSSITEPAGE SET URLPATH = @UrlPath, PARENTSITEPAGEID = @ParentSitePageId, ISHOMEPAGE = @IsHomePage, SHARINGMODE = @SharingMode, STATUS = @Status, MODIFIEDBYID = @ModifiedById, MODIFIEDON = @ModifiedOn WHERE SITEPAGEID = @SitePageId AND TENANTID = @TenantId"; public const string DELETE_SITEPAGE = @" UPDATE DBO.TCMSSITEPAGE SET STATUS = 0, MODIFIEDBYID = @ModifiedById, MODIFIEDON = GETDATE() WHERE SITEPAGEID = @SitePageId AND TENANTID = @TenantId"; // Resolves the system-shared 'SITE_PAGES' Space + 'site-page' ContentType a new page's // Content row belongs to (see 20260905_CMS_Site_Page_Foundation_SqlServer.sql). Looked up // by stable code/slug, not a hardcoded id, since MCONTENTTYPE/MSPACE use plain IDENTITY PKs. public const string GET_SITEPAGE_CONTENTTYPE = @" SELECT ct.CONTENTTYPEID AS ContentTypeId, ct.SPACEID AS SpaceId FROM DBO.MCONTENTTYPE ct WHERE ct.SLUG = 'site-page' AND ct.TENANTID = -1"; }