Ignore:
Timestamp:
08/07/2026 09:37:59 AM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
31e63d1
Parents:
e5fc801 (diff), d14bf1c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge feed-state: de merksteen als koppeltabel (shaer-n05)

Brengt d14bf1c binnen: feedCursor leest ap_feed_state in plaats van MAX(rowid)
over vier tabellen. main had e5fc801 (gate-melding in de Guardian PWA); die twee
raken elkaar alleen in feedCursor en de export-lijst.

Schone merge, geen conflict. Nagekeken op de gemergde boom: de oude
MAX(rowid)-cursor komt nul keer meer voor, de gate-melding en zijn test zijn
intact, en ap_seen_notes (shaer-e9g) staat er nog in beide bestanden. Suite
551/551 op de gemergde boom, gedraaid en niet alleen gelezen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ActivityPubService.js

    re5fc801 r44c9f3f  
    35023502 */
    35033503export function feedCursor(slug) {
    3504   const max = (sql, ...args) => { try { const r = db.prepare(sql).get(...args); return (r && r.n) || 0; } catch { return 0; } };
    3505   const t = max('SELECT MAX(rowid) AS n FROM ap_timeline WHERE slug = ?', slug);
    3506   const m = max('SELECT MAX(rowid) AS n FROM ap_mentions WHERE slug = ?', slug);
    3507   const o = max('SELECT MAX(rowid) AS n FROM ap_outbox WHERE site_slug = ?', slug);
    3508   const r = max(`SELECT MAX(i.rowid) AS n FROM ap_interactions i
    3509                    JOIN posts p ON p.id = i.post_id
    3510                    JOIN sites s ON s.id = p.site_id
    3511                   WHERE s.slug = ? AND i.kind = 'reply'`, slug);
    3512   return `${t}.${m}.${o}.${r}`;
     3504  try {
     3505    const r = db.prepare('SELECT MAX(rev) AS n FROM ap_feed_state WHERE slug = ?').get(slug);
     3506    return String((r && r.n) || 0);
     3507  } catch { return '0'; }
     3508}
     3509
     3510/**
     3511 * Wat er sinds `rev` met deze tijdlijn gebeurd is: welke berichten er nieuw zijn,
     3512 * bewerkt, of weg.
     3513 *
     3514 * Nog niet gebruikt door een leespad -- de vorm van de aankomst is shaer-of7 en
     3515 * de "bewerkt"-markering is daar nog een open beslissing. Maar de gegevens
     3516 * ontstaan hoe dan ook bij het bijhouden van de merksteen, en dit is de enige
     3517 * plek waar ze samen te lezen zijn.
     3518 */
     3519export function feedChangesSince(slug, rev, limit = 200) {
     3520  try {
     3521    return db.prepare(`SELECT object_uri, kind, rev FROM ap_feed_state
     3522                        WHERE slug = ? AND rev > ? ORDER BY rev ASC LIMIT ?`)
     3523      .all(slug, parseInt(rev, 10) || 0, limit);
     3524  } catch { return []; }
    35133525}
    35143526
     
    53645376  buildActor, buildNote, buildCreate, buildOutbox, buildFollowers, buildFollowing, buildFeatured,
    53655377  followerCount, deliver, fetchActor, verifyRequest, handleInbox, deliverCreate, deliverDelete, deliverUpdate, deliverActorUpdate, resyncFeaturedPins,
    5366   feedCursor, waitForFeedChange,
     5378  feedCursor, feedChangesSince, waitForFeedChange,
    53675379  getInteractions, getInteractionById, setInteractionBoosted, setInteractionLiked, buildReplyNote, getOutboxNote, getSentNotes, deliverReply, resolveRemoteNote, noteAudience, mayReadNote,
    53685380  listOutbox, deliverOutboxDelete, deliverOutboxUpdate, deliverDirectNote,
Note: See TracChangeset for help on using the changeset viewer.