Iceshrimp.NET/Iceshrimp.Backend/Core/Extensions
kopper 7173373330
[backend/federation] Improved reply backfill
Instead of backfilling every note we come across that has a reply
collection, only schedule a backfill job if someone wants to see the
replies (on GET MastoAPI /context, or Iceshrimp API /descendants)

Reply backfilling is also done on a ThreadIdOrId basis as opposed to the
previous way of backfilling individual notes. This allows us finer
grained control over the recursion and frees up the job queue, alongside
allowing for easier implementation of context collection backfill in the
future (by mapping each context collection to a thread)

---

Currently, note threads are implicit based on the "threadId" column of a
note, which can be null (where it's the same as the note's "id")

This commit turns note threads into an actual entity, and as a part of
that, makes "threadId" non-nullable (by specifically setting it to "id"
for those cases)

This is done to attach extra metadata to the entire thread, currently
just the time of when it was last backfilled, but more may be added in
the future (the context collection associated with this thread, for example)

---

The data format for backfill jobs have backwards-incompatibly changed
since the introduction of the feature. We can drop all old jobs without
causing too much trouble as they will be re-scheduled on demand

---

Signed-off-by: Laura Hausmann <laura@hausmann.dev>
2024-10-24 21:18:57 +02:00
..
ArrayDestructuringExtensions.cs [backend] Code cleanup 2024-03-24 14:17:02 +01:00
AttributeExtensions.cs [backend/database] Fail gracefully if initial migration is pending and database is not empty (ISH-265) 2024-04-18 18:51:07 +02:00
ConfigurationBuilderExtensions.cs [backend/configuration] Set base path to working directory instead of assembly dir 2024-09-13 21:56:33 +02:00
ConsoleLoggerExtensions.cs [backend/logging] Add LOG_TIMESTAMPS environment variable 2024-08-14 04:40:55 +02:00
DateTimeExtensions.cs [backend] Apply formatting rules 2024-06-29 01:06:19 +02:00
EnumerableExtensions.cs [backend/federation] Refactor collection iteration 2024-09-15 01:47:40 +02:00
ExpressionExtensions.cs [backend/core] Add in:interactions search query filter, allow multiple from: filters 2024-06-17 20:41:09 +02:00
GuidExtensions.cs [backend/database] Switch job identifier generation scheme to from UUIDv4 to ULID 2024-05-27 22:11:18 +02:00
HttpClientExtensions.cs [backend/core] Correctly handle redirects for signed requests (ISH-228) 2024-03-25 18:48:15 +01:00
HttpContextExtensions.cs [backend/api] Add PaginationWrapper<TData> & associated helper methods 2024-10-24 18:20:48 +02:00
HttpRequestExtensions.cs [backend/asp] Correctly handle API requests using chunked transfer encoding 2024-03-16 19:13:34 +01:00
HttpResponseExtensions.cs [backend/federation] Don't mark client error deliver jobs as successful 2024-06-23 14:45:04 +02:00
IPAddressExtensions.cs [backend/core] Don't allow connections to local addresses by default (ISH-330, ISH-331) 2024-05-17 14:19:48 +02:00
ListDestructuringExtensions.cs [backend] Code cleanup 2024-03-24 14:17:02 +01:00
ModelBinderProviderExtensions.cs [backend/asp] Correctly handle API requests using chunked transfer encoding 2024-03-16 19:13:34 +01:00
MvcBuilderExtensions.cs [backend/razor] Move public preview to Blazor SSR (razor components) 2024-10-02 02:17:51 +02:00
NumberExtensions.cs [backend/core] Refactor NumberExtensions 2024-06-21 16:02:40 +02:00
QueryableExtensions.cs [backend/federation] Improved reply backfill 2024-10-24 21:18:57 +02:00
QueryableFtsExtensions.cs [backend] Code cleanup 2024-10-19 03:03:52 +02:00
QueryableTimelineExtensions.cs [backend/core] Allow manual resetting of the home timeline heuristic 2024-10-24 16:48:06 +02:00
ServiceExtensions.cs [backend/api] Add PaginationWrapper<TData> & associated helper methods 2024-10-24 18:20:48 +02:00
StreamExtensions.cs [backend/drive] Switch to stream processing for remote media 2024-07-28 23:32:04 +02:00
StringExtensions.cs [backend/razor] Add admin dashboard (Admin-FE) 2024-10-11 05:41:52 +02:00
SwaggerGenOptionsExtensions.cs [backend/core] Allow configuring arbitrary reject/rewrite policies, add default configuration values to all policies (ISH-16) 2024-10-09 05:46:18 +02:00
TaskExtensions.cs [backend/core] Fix typo 2024-09-26 02:52:14 +02:00
WebApplicationBlazorFrameworkExtensions.cs [backend/middleware] Move ContentEncodingNegotiator into WebApplicationBlazorFrameworkExtensions.cs 2024-04-16 23:54:29 +02:00
WebApplicationExtensions.cs [backend/drive] Add storage cleanup startup command 2024-10-18 23:18:45 +02:00
WebHostExtensions.cs [backend/queue] Remove cluster mode (ISH-141) 2024-07-25 00:00:43 +02:00