Changes in src/services/ArchiveImportService.js [e9ec5e4:a4fea5e] in Klonkt
- File:
-
- 1 edited
-
src/services/ArchiveImportService.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ArchiveImportService.js
re9ec5e4 ra4fea5e 25 25 import db from '../config/database.js'; 26 26 import { MEDIA_ROOT } from '../config/paths.js'; 27 import { FORMAT_VERSION , parseFollowingCsv} from './ArchiveExportService.js';27 import { FORMAT_VERSION } from './ArchiveExportService.js'; 28 28 29 29 const sha256 = (buf) => crypto.createHash('sha256').update(buf).digest('hex'); … … 116 116 function bestemming(a) { 117 117 return padVanOrigineel(a && a['shaer:originalUrl']) || `/media/archief/${path.basename(String((a && a.url) || ''))}`; 118 }119 120 /**121 * Volg opnieuw wie je volgde, uit de `following.csv` van een archief.122 *123 * BEWUST BUITEN importArchive. Die draait in één transactie en raakt alleen de124 * database; opnieuw volgen stuurt Follow-activiteiten de deur uit en wacht op125 * het netwerk. Dat hoort niet in een transactie: een trage peer houdt hem open,126 * en een rollback neemt verzonden activiteiten niet terug.127 *128 * Ook een aparte, expliciete stap omdat een archief inlezen stil is maar negen129 * mensen aanschrijven niet. Dat mag geen bijwerking zijn van een import.130 *131 * `followFn` is injecteerbaar, zodat de test geen netwerk raakt en dit bestand132 * ActivityPubService niet hoeft te importeren.133 */134 export async function importFollowing(site, csvText, { followFn = null } = {}) {135 const rijen = parseFollowingCsv(csvText);136 const rapport = { totaal: rijen.length, gevolgd: 0, overgeslagen: 0, mislukt: [] };137 if (!followFn) return { ...rapport, error: 'no_follow_fn' };138 for (const r of rijen) {139 // Jezelf volgen is geen relatie maar een lus. Kan echt gebeuren bij een140 // archief van een instance die je onder een nieuwe naam opnieuw opzet.141 if (site && site.slug && r.address.startsWith(`${site.slug}@`)) { rapport.overgeslagen += 1; continue; }142 try {143 // De uitgelicht-stand gaat MEE in de Follow zelf: followActor neemt hem144 // als derde argument en zet auto_boost bij het aanmaken van de rij. Een145 // aparte UPDATE erna zou een tweede pad zijn naar dezelfde vlag, en dan146 // kan er precies een halve toestand ontstaan als die faalt.147 const ok = await followFn(site, r.address, r.featured);148 if (ok === false) { rapport.mislukt.push({ adres: r.address, reden: 'geweigerd' }); continue; }149 rapport.gevolgd += 1;150 } catch (e) {151 rapport.mislukt.push({ adres: r.address, reden: (e && e.message) || 'onbekend' });152 }153 }154 return rapport;155 118 } 156 119
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)