Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/MigrationService.js

    r19430fa r919b82d  
    417417        if (auteur && auteur !== bronActor.id) continue;              // alleen wat van HEM was
    418418        gezien++;
    419         // Het interne id BLIJFT (Robins besluit, 14-8). Daarmee is "staat hij
    420         // hier al" gewoon een blik in de tabel, en niet iets dat je uit een
    421         // aparte mapping moet afleiden. Verwijder je een bericht en haal je
    422         // opnieuw op, dan komt het gewoon terug: er staat immers niets meer.
    423         const id = ruwId(o.id) || crypto.randomUUID();
    424         if (db.prepare('SELECT 1 FROM posts WHERE id = ? AND site_id = ?').get(id, site.id)) {
    425           rapport.overgeslagen++;
    426           continue;
    427         }
    428         if (migrationTarget(site.slug, o.id)) rapport.opnieuw++;   // was er, is weg, komt terug
     419        // Al binnen? Alleen overslaan als het bericht er OOK nog staat. Heb je
     420        // het verwijderd, dan is opnieuw ophalen precies wat je bedoelt, en
     421        // een mapping die dat blokkeert is een val: opruimen hielp dan niet,
     422        // want de blokkade zat in ap_migration en niet in de posts.
     423        const eerderPost = migrationTarget(site.slug, o.id);
     424        if (eerderPost) {
     425          const postId = String(eerderPost).split('/').pop();
     426          if (db.prepare('SELECT 1 FROM posts WHERE id = ? AND site_id = ?').get(decodeURIComponent(postId), site.id)) {
     427            rapport.overgeslagen++;
     428            continue;
     429          }
     430          rapport.opnieuw++;   // weg hier, dus opnieuw binnenhalen
     431        }
    429432
    430433        // Media eerst, want een post die naar een plaatje wijst dat we niet
     
    448451        }
    449452
     453        const id = crypto.randomUUID();
    450454        const cover = binnen.find((b) => AFBEELDING.test(b.type || ''));
    451455        const rest = binnen.filter((b) => b !== cover);
     
    522526        // Alleen LEGE velden worden gevuld. Wat jij zelf hebt aangepast blijft
    523527        // staan; een migratie hoort je correcties niet terug te draaien.
    524         const trackId = ruwId(a.id) || crypto.randomUUID();
    525         {
     528        const eerder = migrationTarget(site.slug, a.id);
     529        if (eerder) {
     530          const lokaalId = String(eerder).split('/').pop();
    526531          const rij = db.prepare('SELECT id, cover_url, duration, artist FROM audio_tracks WHERE id = ? AND site_id = ?')
    527             .get(trackId, site.id);
     532            .get(lokaalId, site.id);
    528533          if (rij) {
    529534            trackKaart.set(String(a.id), rij.id);   // MOET, anders vinden de playlists hem niet
     
    552557            continue;
    553558          }
     559          // De rij is weg maar de mapping staat er nog. Dan is opnieuw ophalen
     560          // precies wat je wilt, dus we vallen door naar de gewone tak.
    554561        }
    555562        const bron = a.url && (typeof a.url === 'string' ? a.url : (Array.isArray(a.url) ? (a.url[0] && (a.url[0].href || a.url[0])) : a.url.href));
     
    576583          else rapport.waarschuwingen.push(`hoes niet opgehaald: ${a.name || hoesUrl}`);
    577584        }
     585        const trackId = crypto.randomUUID();
    578586        const mediaId = crypto.randomUUID();
    579587        try {
     
    643651          continue;
    644652        }
     653        // Bestond hij al? Dan dezelfde rij bijwerken. Zonder deze stap levert
     654        // elke tweede ronde een dubbele plaat op.
     655        const eerderPl = migrationTarget(site.slug, uri);
    645656        // De hoes van de plaat, net als bij een nummer.
    646657        let plHoes = null;
     
    654665          else rapport.waarschuwingen.push(`hoes van playlist niet opgehaald: ${plc.name || uri}`);
    655666        }
    656         // Ook hier het id van de bron. Dan blijft [[playlist:<id>]] in een
    657         // bericht wijzen, en is een tweede ronde vanzelf dezelfde rij.
    658         const plId = ruwId(uri) || crypto.randomUUID();
     667        const plId = (() => {
     668          if (!eerderPl) return crypto.randomUUID();
     669          const bestaand = String(eerderPl).split('/').pop();
     670          return db.prepare('SELECT 1 FROM playlists WHERE id = ? AND site_id = ?').get(bestaand, site.id)
     671            ? bestaand : crypto.randomUUID();
     672        })();
    659673        try {
    660674          db.prepare(`INSERT INTO playlists (id, site_id, title, artist, year, kind, cover_url) VALUES (?,?,?,?,?,?,?)
Note: See TracChangeset for help on using the changeset viewer.