about summary refs log tree commit diff
path: root/kittybox-rs/src/database
Commit message (Collapse)AuthorAgeFilesLines
* Split Postgres schemas into twoVika2023-07-211-3/+5
| | | | | Now the postgres schemas are completely independent of each other. This took a while to figure out!
* database/file: tokio::fs::create_dir_all is idempotentVika2023-07-171-6/+3
|
* FileStorage: properly fsync() files and directoriesVika2023-07-171-9/+21
| | | | | | 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)
* cargo update, part 1Vika2023-07-171-5/+5
|
* Implement Postgres backendVika2023-07-092-0/+389
| | | | | | | 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.
* database/memory: cleaner update_post implementationVika2023-07-091-1/+70
| | | | | | | | | | | | 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?)
* database{,/file}: clean up code, add documentation and loggingVika2023-07-092-206/+215
| | | | | | | | | | | | `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).
* micropub: use the new, better typed updates internallyVika2023-07-013-155/+25
|
* database: more realistic pagination testVika2023-06-221-1/+7
| | | | | | 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.
* database: add add_to_feed and remove_from_feedVika2023-06-221-0/+8
| | | | | Some database backends may have optimized ways of tracking feed contents. Others might just use the "children" property directly.
* database: use domains instead of authorities as owner keyVika2023-06-222-30/+35
| | | | | This allows disregarding http/https comparisons and simplifies some database designs.
* database: introduce read_feed_with_cursorVika2023-06-223-3/+32
| | | | | 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.
* StorageError: use std::borrow::Cow for msg fieldVika2023-06-223-21/+36
| | | | | This allows avoiding an unnecessary allocation whenever the error message is static.
* Notes on how to replace lazy_static! with a LazyCellVika2023-06-151-0/+6
| | | | should've been a LazyLock tho
* Add support for the IndieWeb Webring πŸ•ΈπŸ’Vika2023-06-151-0/+20
| | | | Optional at first. Onboarding UI not yet exposed.
* Database: use newtypes to represent settingsVika2023-06-153-39/+91
| | | | This allows much for a cleaner and idiomatic settings interface.
* tempfile -> tempdir, remove mockitoVika2023-02-271-1/+1
|
* kittybox-templates: split out MF2 rendering and get rid of log crateVika2022-07-272-5/+5
| | | | | Kittybox now uses tracing instead of log. Why would I keep an unneccesary dependency in my Cargo.lock?
* FileStorage: save memory by taking children instead of cloningVika2022-07-231-16/+22
|
* database: use .path().to_path_buf() to prevent dropping the tempdirVika2022-07-101-1/+3
| | | | | I'm afraid this might've caused me to do some weird stuff with the tempdir. Better do it like this.
* treewide: rewrite using AxumVika2022-07-073-113/+235
| | | | | | | | | | | | | | 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
* flake.nix: reorganizeVika2022-05-245-0/+1843
- 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