| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
In Kittybox, Micropub updates cannot modify UIDs, since UIDs are used
as a primary key.
Additional constraints may be added later, and perhaps I'll add a
Storage method that would check backend-specific constraints.
|
|
|
|
|
|
| |
This allows for a separation of concerns between database backends and
Micropub, unless such backend have special requirements, like the file
backend storing children of a feed in an array.
|
|
|
|
|
|
|
| |
It just does its thing in the background, potentially speeding up
things. Maybe I could also use the underlying in-memory cache
implementation (Moka) to speed up my database. I heard crates.io got
some good results from that.
|
|
|
|
|
|
| |
The warnings only remain in places where I need them to remain,
because I either need a reminder to implement something, or I need to
refactor and simplify the code in question.
|
|
|
|
| |
Micropub types are now more coherent and gathered in one place.
|
|
|
|
|
|
|
| |
I think I managed to not lose any functionality from my dependencies.
sqlparser remains unupgraded, but that's mostly because it is only
used in one example and it's not worth it to upgrade right now.
|
|
|
|
|
| |
This somehow allowed me to shrink the construction phase of Kittybox
by a huge amount of code.
|
|
|
|
|
| |
Now the database objects can be uniformly created from a URI. They can
also optionally do sanity checks and one-time initialization.
|
|
|
|
| |
This makes the interface more consistent and resistant to misuse.
|
| |
|
| |
|
|
|
|
| |
This reduces the worst-case complexity to O(n) from O(n^2).
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
| |
These features share some code since they both require fetching reply
contexts, so it makes sense to implement them together.
TODO cover webmention sending with integration tests
|
| |
|
|
|
|
|
|
|
|
| |
This will ease future extraction of the media endpoint to a separate
crate. This is highly desirable since it will allow Kittybox's media
endpoint to be used separately in instances where a standalone media
endpoint is desirable (e.g. custom solutions using my code to polyfill
for desired functionality that is undesirable to implement by oneself)
|
|
|
|
|
|
| |
This stubs the neccesary code with enough stuff that it will work and
be accepted by most compliant Micropub implementations. Later, this
can be extended when the neccesary amendments and refactors are done.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Warp allows requests to be applied as "filters", allowing to flexibly
split up logic and have it work in a functional style, similar to
pipes.
Tokio is just an alternative runtime. I thought that maybe switching
runtimes and refactoring the code might allow me to fish out that
pesky bug with the whole application hanging after a certain amount of
requests...
|
| |
|
|
|
|
|
| |
This prevents Micropub requests fired from web apps on other domains
from being blocked by overzealous browsers.
|
| |
|
|
|
|
| |
APIs and preparation for onboarding
|
|
Working features:
- Sending posts from the database
- Reading posts from the database
- Responding with MF2-JSON (only in debug mode!)
- Not locking the database when not needed
- All database actions are atomic (except for a small race where UIDs
can clash, but that's not gonna happen often)
TODOs:
- Send webmentions
- Send syndication requests
- Send WebSub notifications
- Make tombstones for deleted posts (update adding dt-deleted)
- Rich reply contexts (possibly on the frontend part?)
- Frontend?
- Fix UID race
Code maintenance TODOs:
- Split the database module
- Finish implementing the in-memory test database
- Make RedisDatabase unit tests launch their own Redis instances (see
redis-rs/tests/support/mod.rs for more info)
- Write more unit-tests!!!
|