Commit Graph

62 Commits

Author SHA1 Message Date
Aleksei Voronov c498f9edd3
Create rust.yml 2023-10-09 16:13:25 +02:00
Aleksei Voronov 25373561b4
Update README.md
Add some details about dependencies used
2023-10-09 09:31:26 +02:00
Aleksei Voronov 6608071ef5
Update README.md
Add more details about setup, remove the unnecessary roadmap, add links to production deployment.
2023-10-09 09:17:36 +02:00
Aleksei Voronov f5e1d3e020 Formatting 2023-10-07 18:54:43 +02:00
Aleksei Voronov 768bb9f175 The feed parameter is an at-uri, not the feed name 2023-10-07 18:54:27 +02:00
Aleksei Voronov 6f8c86d815 Switch cursor-related messages to debug level
Otherwise it's too noisy
2023-10-07 18:27:25 +02:00
Aleksei Voronov 1bd843a05a Fix publishing feeds
This basically required implementing authentication from ground up
because atrium-api is horribly deficient when it comes to it,
providing basically no real way to manage it, and what is provided
is actually broken anyway requiring additional hacks to get around

Ah well. This has been the story of using anything in Rust that's
related to Bluesky. Everything is broken.
2023-10-07 18:26:20 +02:00
Aleksei Voronov 1e0e34b9a5 Fix the name of the service endpoint field in did.json 2023-10-07 18:24:04 +02:00
Aleksei Voronov 1d17c8b637 Make it able to run in production
- Remove the build Dockerfile, it's not useful on cheap VMs because you can't really build anything on them
- Update the serving address to be 0.0.0.0 so that it's actually exposed externally (127.0.0.1 isn't)
- Also update the port to be 3030 for no reason at all
- Add a Cross.toml config file for cross-compilation since my machine isn't exactly Linux that the resulting binary needs to run on
2023-10-06 20:24:58 +02:00
Aleksei Voronov dec35a867c Fix SQL syntax
Good God, Aleksei.
2023-10-05 20:38:22 +02:00
Aleksei Voronov 2062f0bb89 Add a nice optimized dockerfile for deployment 2023-10-05 20:20:06 +02:00
Aleksei Voronov 70f9733112 Upgrade dependencies because why not 2023-10-02 17:26:21 +02:00
Aleksei Voronov 2df16725bc Update README with some up-to-date info 2023-10-02 17:23:22 +02:00
Aleksei Voronov 2fca5497e6 Allow forcing country for multiple profiles
In case it's necessary
2023-10-02 17:10:14 +02:00
Aleksei Voronov 883d02e328 Extract and print out the time of the commit
Useful for visibility for when we inevitably fall behind in processing
2023-10-02 16:59:31 +02:00
Aleksei Voronov 6bc2dc2a42 Simplify states a little in the server
Use the sub-states directly, as suggested by axum's docs
2023-10-02 16:44:03 +02:00
Aleksei Voronov 4a08a283d2 Properly handle errors in post indexer and profile classifier
Reconnect to Bluesky in the indexer
Don't exit the classifier just because we couldn't fetch profiles
2023-10-02 16:34:22 +02:00
Aleksei Voronov 1ac405e5ee Add a way to manually mark a certain profile as being from a specific country 2023-09-27 13:22:26 +02:00
Aleksei Voronov db8a85624f Formatting 2023-09-27 12:45:08 +02:00
Aleksei Voronov 96480b6fb9 Add proper error handling to the web service
Return 500 when shit happens.
Return 404 when the feed is not found
2023-09-25 12:49:01 +02:00
Aleksei Voronov fadf882a1f Formatting and clippy 2023-09-24 20:27:51 +02:00
Aleksei Voronov 0cd3202a9c Don't error out on profiles that don't exist anymore
Nice little match there, sigh.

Closes #1
2023-09-24 20:26:34 +02:00
Aleksei Voronov 642a3d57cc Remove ciborium in favor of custom deserialization logic
Unfortunately, looks like serde is not flexible enough to support everything CBOR does,
so a lot of messages cannot be deserialized properly. Other serde-based CBOR libraries
suffer from the same problem.

So now we have a bunch of boring deserialization logic supported by sk-cbor
2023-09-24 20:06:20 +02:00
Aleksei Voronov ffccdc40fe Update the roadmap a little bit to mention everything that's needed to get to v1 2023-09-23 20:42:35 +02:00
Aleksei Voronov 2268f9ca14 Limit language detector to only use cyrillic script
The makes the memory consumption like 100Mb, which is much more reasonable than 1Gb that
it was using previously
2023-09-23 20:39:51 +02:00
Aleksei Voronov 658996d5d5 Delete posts from the database when they are deleted from bluesky 2023-09-23 20:29:56 +02:00
Aleksei Voronov dd33333649 Rewrite streaming processing in a more sane way
And also add support for likes and follows
2023-09-23 20:25:26 +02:00
Aleksei Voronov 3a54e04bf4 Upgrade atrium-api dependency 2023-09-22 18:21:08 +02:00
Aleksei Voronov aa17ece012 Fix clippy lints
Nothing major here tbh
2023-09-22 17:15:48 +02:00
Aleksei Voronov 83bede52ce Remove dead code 2023-09-22 17:12:49 +02:00
Aleksei Voronov e95c4923d6 Add some untested version of publishing a feed
Also adjust names of different env vars, and also adjust setup instructions
2023-09-22 13:33:13 +02:00
Aleksei Voronov 5128bf9d4a Refactor streaming stuff
Now we call the processor once per commit, and it's also now
a commit processor, not an operation processor, so that we can
update the cursor properly
2023-09-22 12:37:10 +02:00
Aleksei Voronov 08dc55b2cd Rejiggle things a bit to make it possible to have multiple binaries here for publishing 2023-09-21 15:01:43 +02:00
Aleksei Voronov 901c4b6e97 Make Algo.should_index_post a fallible async function, for maximum extensibility
We may want to perform some more complicated operations here in the future
2023-09-21 13:31:27 +02:00
Aleksei Voronov c02bded6f8 Formatting 2023-09-21 13:28:22 +02:00
Aleksei Voronov 2fd1474647 Don't crash when unable to classify a profile due to some random problem
Random problems include: deleted profiles.

Also always wait 10 seconds between runs, we don't need to do it so often
2023-09-21 13:25:36 +02:00
Aleksei Voronov 93c4979c71 Keep subscription state in order to not lose messages
This isn't a good way to do it though, because opreations processor is only called for each operation,
so we end up not updating the cursor as often as we realistically should be.

I'll refactor this slightly later
2023-09-21 12:33:17 +02:00
Aleksei Voronov 62b00ceed7 Replace random print statements with proper logging setup 2023-09-21 11:22:18 +02:00
Aleksei Voronov f4ee482ce7 Use Arcs to pass stuff around to avoid dealing with lifetimes
And also implement proper language detection through lingua-rs,
because Bluesky's detection is really bad
2023-09-21 10:36:47 +02:00
Aleksei Voronov 9a2a88dc6b Mark serving feed as done 🎉 2023-09-16 21:08:32 +02:00
Aleksei Voronov 14b9f846da Refactor things
Make the overall design a little more flexible if one wants
to easily implement multiple feeds, and also kinda closer to
the original template provided by Bluesky devs
2023-09-16 21:07:00 +02:00
Aleksei Voronov fb17aa3e6a Formatting 2023-09-16 17:40:07 +02:00
Aleksei Voronov a11c5446d5 Upgrade dependencies 2023-09-16 17:39:09 +02:00
Aleksei Voronov 944be0cd5a Convert into more modern Rust module structure
And also use re-exports liberally for shorter imports
2023-09-16 17:21:18 +02:00
Aleksei Voronov 227118dfb1 Rename PostSaver into PostIndexer, which is a better name 2023-09-16 17:16:01 +02:00
Aleksei Voronov b4250e12cd Serve the feed, according to all the Atproto endpoints 2023-09-16 17:13:57 +02:00
Aleksei Voronov c2899951f6 Read chatgpt and postgresql credentials from .env 2023-09-07 19:20:38 +02:00
Aleksei Voronov 832bdf6e92 Simplify lifetimes
I think I may have overdone it with lifetime-per-dependency, I doubt that'll ever become necessary
2023-09-07 19:06:39 +02:00
Aleksei Voronov 9d3cd75db9 Refactor things a little
Split into proper domain components, and 3rd party service glue
2023-09-07 19:02:36 +02:00
Aleksei Voronov 3180db4779 Upgrade dependencies, part 2 2023-09-07 19:02:12 +02:00