Changeset 861c228 in Klonkt for src/services/MigrationService.js
- Timestamp:
- 08/14/2026 01:43:59 AM (4 weeks ago)
- Branches:
- main
- Children:
- dc802b4
- Parents:
- 9f9b45f
- File:
-
- 1 edited
-
src/services/MigrationService.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/MigrationService.js
r9f9b45f r861c228 239 239 240 240 const AFBEELDING = /^image\//i; 241 242 /** 243 * Links naar de BRONPOSTS ombuigen naar hier. 244 * 245 * De gebakken content zit vol met https://oud/<slug>#track-<id> en 246 * https://oud/<slug>?fc=2: de "luister op"-links die buildNote maakt. Die 247 * blijven naar de oude site wijzen, en dat is een tijdbom, want zodra dat 248 * domein opgezegd wordt zijn het dode links in je eigen berichten. 249 * 250 * Kan pas als ALLE posts binnen zijn, en alleen voor een slug die hier echt 251 * bestaat. Een link naar iets dat we niet hebben laten we met rust: dan is een 252 * verwijzing naar de oude site nog altijd beter dan een 404 op de nieuwe. 253 * 254 * De #track-<id>-fragmenten kloppen vanzelf, want sinds "altijd behouden" is 255 * dat id hier hetzelfde. 256 */ 257 export function postLinksBijtrekken(site, bronOrigin, rapport = {}) { 258 if (!bronOrigin) return 0; 259 let n = 0; 260 const rijen = db.prepare('SELECT id, content FROM posts WHERE site_id = ? AND content LIKE ?') 261 .all(site.id, `%${bronOrigin}/%`); 262 if (!rijen.length) return 0; 263 const heeftSlug = db.prepare('SELECT 1 FROM posts WHERE site_id = ? AND slug = ?'); 264 const upd = db.prepare('UPDATE posts SET content = ? WHERE id = ?'); 265 const patroon = new RegExp(`${bronOrigin.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/([A-Za-z0-9._~-]+)`, 'g'); 266 for (const r of rijen) { 267 let inhoud = String(r.content || ''); 268 let raak = false; 269 for (const m of [...new Set([...inhoud.matchAll(patroon)].map((x) => x[1]))]) { 270 // media en audio lopen via hun eigen weg; hier gaat het om postpagina's 271 if (m === 'media' || m === 'audio' || m === 'ap') continue; 272 if (!heeftSlug.get(site.id, m)) continue; 273 inhoud = inhoud.split(`${bronOrigin}/${m}`).join(`/${m}`); 274 raak = true; 275 } 276 if (raak) { upd.run(inhoud, r.id); n++; } 277 } 278 if (n) { 279 rapport.linksBijgetrokken = n; 280 console.log('[FEP-1580] postlinks bijgetrokken in', n, 'bericht(en)'); 281 } 282 return n; 283 } 241 284 242 285 /** … … 770 813 } 771 814 815 // Postlinks eerst: pas nu zijn ALLE berichten binnen, dus pas nu weten we 816 // welke slugs hier bestaan. 817 postLinksBijtrekken(site, bronOrigin, rapport); 818 772 819 // ── De verwijzingen in de tekst bijtrekken ──────────────────── 773 820 //
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)