Commit graph

46 commits

Author SHA1 Message Date
LeoniePhiline
73da97666f
fix(server): Teapot is a cup of coffee (#1137) 2023-07-31 17:17:33 +00:00
Conrad Ludgate
c10ba684e0
some simple server tests (#1096)
* some simple server tests

* fmt

* logging in server test

* log server errors

* fix postgres uri

* postgres ports

* localhost again?

* Rebase fixes

---------

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2023-07-27 09:34:13 +01:00
Ellie Huxtable
5786155969
Add total history count to the index API (#1102)
Thought it would be fun to collect some cool stats, maybe put them on
atuin.sh.
2023-07-14 20:44:47 +01:00
Ellie Huxtable
97e24d0d41
Add new sync (#1093)
* Add record migration

* Add database functions for inserting history

No real tests yet :( I would like to avoid running postgres lol

* Add index handler, use UUIDs not strings

* Fix a bunch of tests, remove Option<Uuid>

* Add tests, all passing

* Working upload sync

* Record downloading works

* Sync download works

* Don't waste requests

* Use a page size for uploads, make it variable later

* Aaaaaand they're encrypted now too

* Add cek

* Allow reading tail across hosts

* Revert "Allow reading tail across hosts"

Not like that

This reverts commit 7b0c72e7e050c358172f9b53cbd21b9e44cf4931.

* Handle multiple shards properly

* format

* Format and make clippy happy

* use some fancy types (#1098)

* use some fancy types

* fmt

* Goodbye horrible tuple

* Update atuin-server-postgres/migrations/20230623070418_records.sql

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>

* fmt

* Sort tests too because time sucks

* fix features

---------

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2023-07-14 20:44:08 +01:00
YummyOreo
85c7339e65
fix: fixes unix specific impl of shutdown_signal (#1061) 2023-06-19 08:14:03 +01:00
Conrad Ludgate
8655c93853
refactor server to allow pluggable db and tracing (#1036)
* refactor server to allow pluggable db and tracing

* clean up

* fix descriptions

* remove dependencies
2023-06-12 09:04:35 +01:00
Marijan Smetko
5dc189cf83
Add graceful shutdown on SIGTERM (#1014)
* Add graceful shutdown on SIGTERM

* Fix linter
2023-05-30 05:51:16 +01:00
Ellie Huxtable
d2240e1163
Allow server configured page size (#994)
* Allow server configured page size

* Backwards compat via semver checks

* Correct header name
2023-05-21 15:21:51 +00:00
Conrad Ludgate
7d5a82df14
validate usernames on registration (#982)
improve login password incorrect error message

update docs for registration with passwords
2023-05-16 22:03:53 +01:00
Yannick Ulrich
7b9dea72e3
feat: add delete account option (attempt 2) (#980)
* Added DELETE register endpoint

* Added remove function to database

* Added unregister to client

* Updated docs

* Renamed functions

* Reformatting

* Used execute instead of fetch in delete_user
2023-05-16 22:00:59 +01:00
Ellie Huxtable
bf7432f392
Patch bash history import regression (#970)
* At least patch this on the server side so we don't loop forever

* Postgres doesn't support <microsecond precision

Use millis - almost everything should support them and they are still
faster than a human can reasonably spam a button.
2023-05-10 13:02:35 +00:00
Conrad Ludgate
c7d89c1703
chore: uuhhhhhh crypto lol (#805)
* chore: uuhhhhhh crypto lol

* remove dead code

* fix key decoding

* use inplace encryption
2023-04-17 21:12:02 +01:00
Ellie Huxtable
0d16a113c5
Add atuin status (#830)
Useful for debugging, checking the state of things, and for if you
forget your username!
2023-03-30 06:45:49 +01:00
Ellie Huxtable
c30b457fc5
Account for user not yet having count cache (#812)
* Account for user not yet having count cache

* Make clippy happy
2023-03-26 17:48:41 +01:00
Ellie Huxtable
dcd77749dd
Add history deletion (#791)
* Drop events. I'd still like to do them, but differently

* Start adding delete api stuff

* Set mailmap

* Delete delete delete

* Fix tests

* Make clippy happy
2023-03-20 09:26:54 +00:00
Ellie Huxtable
b978f9a4de
Add register notification webhook (#764)
I find it super motivating when people use my stuff, so this makes it
_even easier_ to know when someone new signs up!
2023-03-07 22:09:19 +00:00
Conrad Ludgate
fe67dbb96c
fix registration (#740) 2023-02-28 15:46:24 +00:00
Erwin Kroon
dcfad9a90d
Add support for generic database in AppState (#711) 2023-02-15 08:54:09 +00:00
Conrad Ludgate
0acdb99eb3
axum6 with typesafe state (#674) 2023-02-10 09:45:20 +00:00
Ellie Huxtable
f03f6e9ad7
Add automatic update checking (#555)
* Add automatic update checking

* Add setting to opt out of update checks

* Document options

* no

* no

* also no

* Make clippy happy

* Update atuin-client/src/settings.rs

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>

* fix features

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2022-10-14 10:59:21 +01:00
Conrad Ludgate
5725f4b40b
add some error messages (#510)
* add some error messages

* fmt
2022-10-07 20:33:07 -07:00
morguldir
0c5e250800
Add support for prepending a path to all routes for the server (#484)
* Add support for prepending a path to all routes

* Don't nest if there is no path provided

Co-authored-by: Conrad Ludgate <oon@conradludgate.com>

* Change the default for the path variable

* run cargo-fmt

Co-authored-by: Conrad Ludgate <oon@conradludgate.com>
2022-07-26 08:05:34 +01:00
Ellie Huxtable
23b9d34e16
Add configurable history length (#447)
* Add configurable history length

This allows servers to decide the max length of each history item they
want to store! Some users might have much larger history lines than
others.

This setting can be set to 0 to allow for unlimited history length. This
is not recommended for a public server install, but for a private one it
can work nicely.

* Format lol
2022-06-10 10:00:59 +01:00
Ellie Huxtable
06ac95876c
Show current version on server index (#436) 2022-06-06 09:58:19 +01:00
Jakub Jirutka
5e4e8d1152
Don't create config dir for server in default location if not needed (#406)
...respect ATUIN_CONFIG_DIR.

The current behaviour is problematic when running atuin server as a
system service with config dir in /etc/atuin.
2022-05-13 06:07:46 +01:00
Jakub Panek
93ab4e7842
ignore JetBrains IDEs, tidy-up imports (#348)
* ignore JB IDEs

* tidy-up imports

* add rustfmt config
2022-04-28 18:53:59 +01:00
Ellie Huxtable
f8233bcb63
SQLx cannot run this migration OK (#353)
And also correct a typo
2022-04-26 18:17:56 +01:00
Ellie Huxtable
8ac6571bc6
Remove all select * from the server queries (#347)
It's not ideal as we should be explicit about what is being queried!

A part one for sorting this all out :)
2022-04-26 10:37:16 +01:00
dependabot[bot]
89549b367b
Bump uuid from 0.8.2 to 1.0.0 (#311)
* Bump uuid from 0.8.2 to 1.0.0

Bumps [uuid](https://github.com/uuid-rs/uuid) from 0.8.2 to 1.0.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/0.8.2...1.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* patch

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2022-04-22 21:38:37 +01:00
Conrad Ludgate
02c70deecb
refactor (#327) 2022-04-22 19:24:38 +01:00
Conrad Ludgate
9085485a4f
tracing (#315)
* enable tracing on server

* fmt

* instrument handlers
2022-04-21 18:07:33 +01:00
Ellie Huxtable
24e2971787
Fix SQL cache query (#318)
I just deployed the older version and it was falling back on the full
count. Turns out this is because it won't upcast from INT4 to INT8
automatically, and it has to be manual

At some point the underlying total should be changed to int8, but also I
highly doubt anyone will have enough shell history to fill an int4 lol
2022-04-21 09:19:54 +01:00
Ellie Huxtable
ed4e07d2e6
Use the count cache (#312)
* Use the count cache

By default read from the count cache - if there is no value there, then
do a full COUNT. The cache will be filled when the user posts up some
more history

* clean up server db error handling

Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2022-04-21 08:03:39 +01:00
Ellie Huxtable
f4240aa62b
Initial implementation of calendar API (#298)
This can be used in the future for sync so that we can be more
intelligent with what we're doing, and only sync up what's needed

I'd like to eventually replace this with something more like a merkle
tree, hence the hash field I've exposed, but that can come later

Although this does include a much larger number of count queries, it
should also be significantly more cache-able. I'll follow up with that
later, and also follow up with using this for sync :)
2022-04-13 18:29:18 +01:00
Conrad Ludgate
3c5fbc5734
provide better error messages (#300) 2022-04-13 18:08:49 +01:00
Conrad Ludgate
bc45bab273
remove default db uri (#299) 2022-04-13 18:08:21 +01:00
Conrad Ludgate
a95018cc90
goodbye warp, hello axum (#296) 2022-04-12 23:06:19 +01:00
Conrad Ludgate
3b7ed7caff
fix env config parsing (#295)
* fix env config parsing

* fmt
2022-04-12 21:47:07 +01:00
Ellie Huxtable
d270798277
Update config-rs (#280)
* Update config-rs

Also fix our call to current_dir

This should resolve #195

Thanks @conradludgate for the upstream fix!

* Format
2022-03-17 21:26:57 +00:00
Lucas Burns
7f587418da
Fix history list --cwd errors (#278) 2022-03-13 19:53:49 +00:00
Conrad Ludgate
6e8ec8689d
chore: improve build times (#213) 2021-11-21 14:34:04 +00:00
Conrad Ludgate
de2e34ac50
some changes 🤷 (#83)
* make everything a cow

* fmt + clippy
2021-05-09 21:17:24 +01:00
Conrad Ludgate
1c59f85ea8
remove dyn Reply (#48)
* cleanup reply types

* cleanup error api

* small update

* improve api some more

* fmt
2021-05-07 21:06:56 +01:00
Ellie Huxtable
156893d774
Update docs, unify on SQLx, bugfixes (#40)
* Begin moving to sqlx for local too

* Stupid scanners should just have a nice cup of tea

Random internet shit searching for /.env or whatever

* Remove diesel and rusqlite fully
2021-04-25 17:21:52 +00:00
Ellie Huxtable
4a50ce3666 Bugfixes, show time ago, perf improvements
Also allow unique listing and more ergonomic cwd usage
2021-04-21 21:26:44 +01:00
Ellie Huxtable
a21737e2b7
Use cargo workspaces (#37)
* Switch to Cargo workspaces

Breaking things into "client", "server" and "common" makes managing the
codebase much easier!

client - anything running on a user's machine for adding history
server - handles storing/syncing history and running a HTTP server
common - request/response API definitions, common utils, etc

* Update dockerfile
2021-04-20 20:53:07 +00:00