| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This is an operation that atomically adds or updates a webmention cite
attached to a post. This is used so a database backend can optimize
for it (for example, using a transaction or shifting the JSON
modification operation to the database)
|
| |
|
|
|
|
|
| |
Now the postgres schemas are completely independent of each
other. This took a while to figure out!
|
| |
|
|
|
|
|
|
| |
Total crash-safety. Yank the power cord all you want, your data is
going to be safe and sound. (Unless your drive controller lies to you
about flushing its caches)
|
| |
|
|
|
|
|
|
|
| |
A single giga-commit that took me weeks to produce. I know, this is
not exactly the best thing ever β but I wanted to experiment first
before "committing" to the implementation, so that I would produce the
best solution.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This one manages to avoid extraneous allocations as much as possible,
by deconstructing the update into pieces and using a mutable reference
taken directly from the hashmap in which the posts are stored.
Now if only this hashmap were to be serialized on Drop, we could even
have persistence in the database and therefore gain another backend
that requires no dependencies to run, just like FileStorage, but
avoids extraneous file access (or maybe shunts it into the
background?)
|
|
|
|
|
|
|
|
|
|
|
|
| |
`filter_post` is now out of here and moved into the frontend. This
kind of non-intrusive filtering can be done on the frontend, and the
database need not concern itself with this.
It can still be done as an optimisation... probably? but the frontend
is going to sanitize things like location in the post by itself now,
so it is not required anymore (and might be harmful, if frontend
starts indicating that there are some hidden fields by replacing them
with placeholders that ask one to log in to view information).
|
| |
|
|
|
|
|
|
| |
We insert published time into all objects anyway, and expect feeds to
be ordered by publishing time. We should let databases rely on that
assumption when returning feeds.
|
|
|
|
|
| |
Some database backends may have optimized ways of tracking feed
contents. Others might just use the "children" property directly.
|
|
|
|
|
| |
This allows disregarding http/https comparisons and simplifies some
database designs.
|
|
|
|
|
| |
read_feed_with_cursor allows using an arbitrary string as a cursor,
unlike read_feed_with_limit, which uses last post's UID as a cursor.
|
|
|
|
|
| |
This allows avoiding an unnecessary allocation whenever the error
message is static.
|
|
|
|
| |
should've been a LazyLock tho
|
|
|
|
| |
Optional at first. Onboarding UI not yet exposed.
|
|
|
|
| |
This allows much for a cleaner and idiomatic settings interface.
|
| |
|
|
|
|
|
| |
Kittybox now uses tracing instead of log. Why would I keep an
unneccesary dependency in my Cargo.lock?
|
| |
|
|
|
|
|
| |
I'm afraid this might've caused me to do some weird stuff with the
tempdir. Better do it like this.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Axum has streaming bodies and allows to write simpler code. It also
helps enforce stronger types and looks much more neat.
This allows me to progress on the media endpoint and add streaming
reads and writes to the MediaStore trait.
Metrics are temporarily not implemented. Everything else was
preserved, and the tests still pass, after adjusting for new calling
conventions.
TODO: create method routers for protocol endpoints
|
|
- Kittybox's source code is moved to a subfolder
- This improves build caching by Nix since it doesn't take changes
to other files into account
- Package and test definitions were spun into separate files
- This makes my flake.nix much easier to navigate
- This also makes it somewhat possible to use without flakes (but
it is still not easy, so use flakes!)
- Some attributes were moved in compliance with Nix 2.8's changes to
flake schema
|