Compare commits

...

2 Commits

Author SHA1 Message Date
f39c8c1981 Sort pages locally
All checks were successful
thehideout/TheHideout-API/pipeline/head This commit looks good
2026-01-02 23:27:14 +00:00
13d89e2d52 Only run on main branch 2026-01-02 23:11:03 +00:00
3 changed files with 16 additions and 16 deletions

7
Jenkinsfile vendored
View File

@ -2,6 +2,13 @@ def deploy() {
node('ubuntu') { node('ubuntu') {
try { try {
checkout scm checkout scm
// Only deploy from main branch
def branch = env.BRANCH_NAME ?: sh(script: 'git rev-parse --abbrev-ref HEAD', returnStdout: true).trim()
if (branch != 'main') {
echo "Skipping deployment: not on main branch (current branch: ${branch})"
return
}
nodejs(nodeJSInstallationName: 'Node23') { nodejs(nodeJSInstallationName: 'Node23') {
stage('Install') { stage('Install') {

View File

@ -2,6 +2,7 @@ import { queryNotionDataSource, getNotionPage } from "../utils/notion.js";
import { transformPageData, storePages, getPages } from "../utils/pages.js"; import { transformPageData, storePages, getPages } from "../utils/pages.js";
import { getProperties } from "../utils/properties.js"; import { getProperties } from "../utils/properties.js";
import { getSettings } from "../utils/settings.js"; import { getSettings } from "../utils/settings.js";
import { unionBy } from "lodash";
// Fetch Notion pages (raw data) // Fetch Notion pages (raw data)
export async function importNotionPages(env, notionId = null) { export async function importNotionPages(env, notionId = null) {
@ -29,22 +30,10 @@ export async function importNotionPages(env, notionId = null) {
const cachedPages = await getPages(env); const cachedPages = await getPages(env);
console.log("Cached pages:", cachedPages); console.log("Cached pages:", cachedPages);
console.log("Pages:", pages); console.log("Pages:", pages);
// Create a map of new pages by notionId for quick lookup // Use unionBy to merge pages by notionId (new pages take precedence)
const newPagesMap = new Map(pages.map((page) => [page.notionId, page])); const mergedPages = unionBy(pages, cachedPages, "notionId");
// Sort by order
// Merge: preserve cached order, but replace with new data if available mergedPages.sort((a, b) => (a.order || 0) - (b.order || 0));
const mergedPages = cachedPages.map((cachedPage) => {
return newPagesMap.has(cachedPage.notionId)
? newPagesMap.get(cachedPage.notionId)
: cachedPage;
});
// Add any new pages that weren't in cache
const existingNotionIds = new Set(cachedPages.map((page) => page.notionId));
const newPages = pages.filter(
(page) => !existingNotionIds.has(page.notionId)
);
mergedPages.push(...newPages);
await storePages(env, mergedPages); await storePages(env, mergedPages);
console.log("Pages imported from Notion and merged with cache."); console.log("Pages imported from Notion and merged with cache.");
return mergedPages; return mergedPages;

View File

@ -134,6 +134,9 @@ export async function transformPageData(
const showScroll = properties["Show Scroll Icon"]?.checkbox || false; const showScroll = properties["Show Scroll Icon"]?.checkbox || false;
// Extract order property
const order = properties["Order"]?.number || 0;
if (showProperties == true) { if (showProperties == true) {
content.push({ content.push({
type: "properties", type: "properties",
@ -168,5 +171,6 @@ export async function transformPageData(
showContactForm: showContactForm, showContactForm: showContactForm,
hideMobileImage: hideMobileImage, hideMobileImage: hideMobileImage,
invertHeader: invertHeader, invertHeader: invertHeader,
order: order,
}; };
} }