aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/atuin_server
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--crates/turtle/src/atuin_server/handlers/health.rs6
-rw-r--r--crates/turtle/src/atuin_server/handlers/history.rs18
-rw-r--r--crates/turtle/src/atuin_server/handlers/mod.rs22
-rw-r--r--crates/turtle/src/atuin_server/handlers/record.rs6
-rw-r--r--crates/turtle/src/atuin_server/handlers/status.rs2
-rw-r--r--crates/turtle/src/atuin_server/handlers/user.rs12
-rw-r--r--crates/turtle/src/atuin_server/handlers/v0/me.rs2
-rw-r--r--crates/turtle/src/atuin_server/handlers/v0/record.rs8
-rw-r--r--crates/turtle/src/atuin_server/handlers/v0/store.rs4
-rw-r--r--crates/turtle/src/atuin_server/metrics.rs4
-rw-r--r--crates/turtle/src/atuin_server/mod.rs10
-rw-r--r--crates/turtle/src/atuin_server/router.rs10
-rw-r--r--crates/turtle/src/atuin_server/settings.rs38
-rw-r--r--crates/turtle/src/atuin_server/utils.rs2
-rw-r--r--crates/turtle/src/atuin_server_database/calendar.rs8
-rw-r--r--crates/turtle/src/atuin_server_database/mod.rs22
-rw-r--r--crates/turtle/src/atuin_server_database/models.rs60
-rw-r--r--crates/turtle/src/atuin_server_postgres/mod.rs2
-rw-r--r--crates/turtle/src/atuin_server_postgres/wrappers.rs8
-rw-r--r--crates/turtle/src/atuin_server_sqlite/mod.rs2
-rw-r--r--crates/turtle/src/atuin_server_sqlite/wrappers.rs8
21 files changed, 127 insertions, 127 deletions
diff --git a/crates/turtle/src/atuin_server/handlers/health.rs b/crates/turtle/src/atuin_server/handlers/health.rs
index aebd1e8f..d39f7aa5 100644
--- a/crates/turtle/src/atuin_server/handlers/health.rs
+++ b/crates/turtle/src/atuin_server/handlers/health.rs
@@ -3,11 +3,11 @@ use axum::{Json, http, response::IntoResponse};
use serde::Serialize;
#[derive(Serialize)]
-pub struct HealthResponse {
- pub status: &'static str,
+pub(crate) struct HealthResponse {
+ pub(crate) status: &'static str,
}
-pub async fn health_check() -> impl IntoResponse {
+pub(crate) async fn health_check() -> impl IntoResponse {
(
http::StatusCode::OK,
Json(HealthResponse { status: "healthy" }),
diff --git a/crates/turtle/src/atuin_server/handlers/history.rs b/crates/turtle/src/atuin_server/handlers/history.rs
index 7f09161b..e5057bcb 100644
--- a/crates/turtle/src/atuin_server/handlers/history.rs
+++ b/crates/turtle/src/atuin_server/handlers/history.rs
@@ -23,7 +23,7 @@ use crate::atuin_server_database::{
use crate::atuin_common::api::*;
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn count<DB: Database>(
+pub(crate) async fn count<DB: Database>(
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
) -> Result<Json<CountResponse>, ErrorResponseStatus<'static>> {
@@ -43,7 +43,7 @@ pub async fn count<DB: Database>(
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn list<DB: Database>(
+pub(crate) async fn list<DB: Database>(
req: Query<SyncHistoryRequest>,
UserAuth(user): UserAuth,
headers: HeaderMap,
@@ -101,7 +101,7 @@ pub async fn list<DB: Database>(
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn delete<DB: Database>(
+pub(crate) async fn delete<DB: Database>(
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
Json(req): Json<DeleteHistoryRequest>,
@@ -123,7 +123,7 @@ pub async fn delete<DB: Database>(
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn add<DB: Database>(
+pub(crate) async fn add<DB: Database>(
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
Json(req): Json<Vec<AddHistoryRequest>>,
@@ -174,7 +174,7 @@ pub async fn add<DB: Database>(
}
#[derive(serde::Deserialize, Debug)]
-pub struct CalendarQuery {
+pub(crate) struct CalendarQuery {
#[serde(default = "serde_calendar::zero")]
year: i32,
#[serde(default = "serde_calendar::one")]
@@ -187,21 +187,21 @@ pub struct CalendarQuery {
mod serde_calendar {
use time::UtcOffset;
- pub fn zero() -> i32 {
+ pub(crate) fn zero() -> i32 {
0
}
- pub fn one() -> u8 {
+ pub(crate) fn one() -> u8 {
1
}
- pub fn utc() -> UtcOffset {
+ pub(crate) fn utc() -> UtcOffset {
UtcOffset::UTC
}
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn calendar<DB: Database>(
+pub(crate) async fn calendar<DB: Database>(
Path(focus): Path<String>,
Query(params): Query<CalendarQuery>,
UserAuth(user): UserAuth,
diff --git a/crates/turtle/src/atuin_server/handlers/mod.rs b/crates/turtle/src/atuin_server/handlers/mod.rs
index 7722d03e..322324c4 100644
--- a/crates/turtle/src/atuin_server/handlers/mod.rs
+++ b/crates/turtle/src/atuin_server/handlers/mod.rs
@@ -4,16 +4,16 @@ use axum::{Json, extract::State, http, response::IntoResponse};
use crate::atuin_server::router::AppState;
-pub mod health;
-pub mod history;
-pub mod record;
-pub mod status;
-pub mod user;
-pub mod v0;
+pub(crate) mod health;
+pub(crate) mod history;
+pub(crate) mod record;
+pub(crate) mod status;
+pub(crate) mod user;
+pub(crate) mod v0;
const VERSION: &str = env!("CARGO_PKG_VERSION");
-pub async fn index<DB: Database>(state: State<AppState<DB>>) -> Json<IndexResponse> {
+pub(crate) async fn index<DB: Database>(state: State<AppState<DB>>) -> Json<IndexResponse> {
let homage = r#""Through the fathomless deeps of space swims the star turtle Great A'Tuin, bearing on its back the four giant elephants who carry on their shoulders the mass of the Discworld." -- Sir Terry Pratchett"#;
let version = state
@@ -34,12 +34,12 @@ impl IntoResponse for ErrorResponseStatus<'_> {
}
}
-pub struct ErrorResponseStatus<'a> {
- pub error: ErrorResponse<'a>,
- pub status: http::StatusCode,
+pub(crate) struct ErrorResponseStatus<'a> {
+ pub(crate) error: ErrorResponse<'a>,
+ pub(crate) status: http::StatusCode,
}
-pub trait RespExt<'a> {
+pub(crate) trait RespExt<'a> {
fn with_status(self, status: http::StatusCode) -> ErrorResponseStatus<'a>;
fn reply(reason: &'a str) -> Self;
}
diff --git a/crates/turtle/src/atuin_server/handlers/record.rs b/crates/turtle/src/atuin_server/handlers/record.rs
index 63325606..39060423 100644
--- a/crates/turtle/src/atuin_server/handlers/record.rs
+++ b/crates/turtle/src/atuin_server/handlers/record.rs
@@ -8,7 +8,7 @@ use crate::atuin_server::router::UserAuth;
use crate::atuin_common::record::{EncryptedData, Record};
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn post(UserAuth(user): UserAuth) -> Result<(), ErrorResponseStatus<'static>> {
+pub(crate) async fn post(UserAuth(user): UserAuth) -> Result<(), ErrorResponseStatus<'static>> {
// anyone who has actually used the old record store (a very small number) will see this error
// upon trying to sync.
// 1. The status endpoint will say that the server has nothing
@@ -24,7 +24,7 @@ pub async fn post(UserAuth(user): UserAuth) -> Result<(), ErrorResponseStatus<'s
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn index(UserAuth(user): UserAuth) -> axum::response::Response {
+pub(crate) async fn index(UserAuth(user): UserAuth) -> axum::response::Response {
let ret = json!({
"hosts": {}
});
@@ -33,7 +33,7 @@ pub async fn index(UserAuth(user): UserAuth) -> axum::response::Response {
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn next(
+pub(crate) async fn next(
UserAuth(user): UserAuth,
) -> Result<Json<Vec<Record<EncryptedData>>>, ErrorResponseStatus<'static>> {
let records = Vec::new();
diff --git a/crates/turtle/src/atuin_server/handlers/status.rs b/crates/turtle/src/atuin_server/handlers/status.rs
index 0cf2ca1e..59be1e5c 100644
--- a/crates/turtle/src/atuin_server/handlers/status.rs
+++ b/crates/turtle/src/atuin_server/handlers/status.rs
@@ -10,7 +10,7 @@ use crate::atuin_common::api::*;
const VERSION: &str = env!("CARGO_PKG_VERSION");
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn status<DB: Database>(
+pub(crate) async fn status<DB: Database>(
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
) -> Result<Json<StatusResponse>, ErrorResponseStatus<'static>> {
diff --git a/crates/turtle/src/atuin_server/handlers/user.rs b/crates/turtle/src/atuin_server/handlers/user.rs
index 01b72202..7708d43e 100644
--- a/crates/turtle/src/atuin_server/handlers/user.rs
+++ b/crates/turtle/src/atuin_server/handlers/user.rs
@@ -29,7 +29,7 @@ use reqwest::header::CONTENT_TYPE;
use crate::atuin_common::{api::*, utils::crypto_random_string};
-pub fn verify_str(hash: &str, password: &str) -> bool {
+pub(crate) fn verify_str(hash: &str, password: &str) -> bool {
let arg2 = Argon2::new(Algorithm::Argon2id, Version::V0x13, Params::default());
let Ok(hash) = PasswordHash::new(hash) else {
return false;
@@ -63,7 +63,7 @@ async fn send_register_hook(url: &str, username: String, registered: String) {
}
#[instrument(skip_all, fields(user.username = username.as_str()))]
-pub async fn get<DB: Database>(
+pub(crate) async fn get<DB: Database>(
Path(username): Path<String>,
state: State<AppState<DB>>,
) -> Result<Json<UserResponse>, ErrorResponseStatus<'static>> {
@@ -87,7 +87,7 @@ pub async fn get<DB: Database>(
}
#[instrument(skip_all)]
-pub async fn register<DB: Database>(
+pub(crate) async fn register<DB: Database>(
state: State<AppState<DB>>,
Json(register): Json<RegisterRequest>,
) -> Result<Json<RegisterResponse>, ErrorResponseStatus<'static>> {
@@ -163,7 +163,7 @@ pub async fn register<DB: Database>(
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn delete<DB: Database>(
+pub(crate) async fn delete<DB: Database>(
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
) -> Result<Json<DeleteUserResponse>, ErrorResponseStatus<'static>> {
@@ -183,7 +183,7 @@ pub async fn delete<DB: Database>(
}
#[instrument(skip_all, fields(user.id = user.id, change_password))]
-pub async fn change_password<DB: Database>(
+pub(crate) async fn change_password<DB: Database>(
UserAuth(mut user): UserAuth,
state: State<AppState<DB>>,
Json(change_password): Json<ChangePasswordRequest>,
@@ -213,7 +213,7 @@ pub async fn change_password<DB: Database>(
}
#[instrument(skip_all, fields(user.username = login.username.as_str()))]
-pub async fn login<DB: Database>(
+pub(crate) async fn login<DB: Database>(
state: State<AppState<DB>>,
login: Json<LoginRequest>,
) -> Result<Json<LoginResponse>, ErrorResponseStatus<'static>> {
diff --git a/crates/turtle/src/atuin_server/handlers/v0/me.rs b/crates/turtle/src/atuin_server/handlers/v0/me.rs
index a1e2db46..1f5f5016 100644
--- a/crates/turtle/src/atuin_server/handlers/v0/me.rs
+++ b/crates/turtle/src/atuin_server/handlers/v0/me.rs
@@ -7,7 +7,7 @@ use crate::atuin_server::router::UserAuth;
use crate::atuin_common::api::*;
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn get(
+pub(crate) async fn get(
UserAuth(user): UserAuth,
) -> Result<Json<MeResponse>, ErrorResponseStatus<'static>> {
Ok(Json(MeResponse {
diff --git a/crates/turtle/src/atuin_server/handlers/v0/record.rs b/crates/turtle/src/atuin_server/handlers/v0/record.rs
index 9b147a52..2cc09118 100644
--- a/crates/turtle/src/atuin_server/handlers/v0/record.rs
+++ b/crates/turtle/src/atuin_server/handlers/v0/record.rs
@@ -12,7 +12,7 @@ use crate::atuin_server_database::Database;
use crate::atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn post<DB: Database>(
+pub(crate) async fn post<DB: Database>(
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
Json(records): Json<Vec<Record<EncryptedData>>>,
@@ -51,7 +51,7 @@ pub async fn post<DB: Database>(
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn index<DB: Database>(
+pub(crate) async fn index<DB: Database>(
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
) -> Result<Json<RecordStatus>, ErrorResponseStatus<'static>> {
@@ -76,7 +76,7 @@ pub async fn index<DB: Database>(
}
#[derive(Deserialize)]
-pub struct NextParams {
+pub(crate) struct NextParams {
host: HostId,
tag: String,
start: Option<RecordIdx>,
@@ -84,7 +84,7 @@ pub struct NextParams {
}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn next<DB: Database>(
+pub(crate) async fn next<DB: Database>(
params: Query<NextParams>,
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
diff --git a/crates/turtle/src/atuin_server/handlers/v0/store.rs b/crates/turtle/src/atuin_server/handlers/v0/store.rs
index cd184546..8269d6b3 100644
--- a/crates/turtle/src/atuin_server/handlers/v0/store.rs
+++ b/crates/turtle/src/atuin_server/handlers/v0/store.rs
@@ -10,10 +10,10 @@ use crate::atuin_server::{
use crate::atuin_server_database::Database;
#[derive(Deserialize)]
-pub struct DeleteParams {}
+pub(crate) struct DeleteParams {}
#[instrument(skip_all, fields(user.id = user.id))]
-pub async fn delete<DB: Database>(
+pub(crate) async fn delete<DB: Database>(
_params: Query<DeleteParams>,
UserAuth(user): UserAuth,
state: State<AppState<DB>>,
diff --git a/crates/turtle/src/atuin_server/metrics.rs b/crates/turtle/src/atuin_server/metrics.rs
index ebd0dd2d..7a9dc571 100644
--- a/crates/turtle/src/atuin_server/metrics.rs
+++ b/crates/turtle/src/atuin_server/metrics.rs
@@ -7,7 +7,7 @@ use axum::{
};
use metrics_exporter_prometheus::{Matcher, PrometheusBuilder, PrometheusHandle};
-pub fn setup_metrics_recorder() -> PrometheusHandle {
+pub(crate) fn setup_metrics_recorder() -> PrometheusHandle {
const EXPONENTIAL_SECONDS: &[f64] = &[
0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0,
];
@@ -25,7 +25,7 @@ pub fn setup_metrics_recorder() -> PrometheusHandle {
/// Middleware to record some common HTTP metrics
/// Generic over B to allow for arbitrary body types (eg Vec<u8>, Streams, a deserialized thing, etc)
/// Someday tower-http might provide a metrics middleware: https://github.com/tower-rs/tower-http/issues/57
-pub async fn track_metrics(req: Request, next: Next) -> impl IntoResponse {
+pub(crate) async fn track_metrics(req: Request, next: Next) -> impl IntoResponse {
let start = Instant::now();
let path = match req.extensions().get::<MatchedPath>() {
diff --git a/crates/turtle/src/atuin_server/mod.rs b/crates/turtle/src/atuin_server/mod.rs
index bd0f2168..ad480e1d 100644
--- a/crates/turtle/src/atuin_server/mod.rs
+++ b/crates/turtle/src/atuin_server/mod.rs
@@ -10,9 +10,9 @@ mod metrics;
mod router;
mod utils;
-pub use settings::Settings;
+pub(crate) use settings::Settings;
-pub mod settings;
+pub(crate) mod settings;
use tokio::net::TcpListener;
use tokio::signal;
@@ -31,7 +31,7 @@ async fn shutdown_signal() {
eprintln!("Shutting down gracefully...");
}
-pub async fn launch<Db: Database>(settings: Settings, addr: SocketAddr) -> Result<()> {
+pub(crate) async fn launch<Db: Database>(settings: Settings, addr: SocketAddr) -> Result<()> {
launch_with_tcp_listener::<Db>(
settings,
TcpListener::bind(addr)
@@ -42,7 +42,7 @@ pub async fn launch<Db: Database>(settings: Settings, addr: SocketAddr) -> Resul
.await
}
-pub async fn launch_with_tcp_listener<Db: Database>(
+pub(crate) async fn launch_with_tcp_listener<Db: Database>(
settings: Settings,
listener: TcpListener,
shutdown: impl Future<Output = ()> + Send + 'static,
@@ -58,7 +58,7 @@ pub async fn launch_with_tcp_listener<Db: Database>(
// The separate listener means it's much easier to ensure metrics are not accidentally exposed to
// the public.
-pub async fn launch_metrics_server(host: String, port: u16) -> Result<()> {
+pub(crate) async fn launch_metrics_server(host: String, port: u16) -> Result<()> {
let listener = TcpListener::bind((host, port))
.await
.context("failed to bind metrics tcp")?;
diff --git a/crates/turtle/src/atuin_server/router.rs b/crates/turtle/src/atuin_server/router.rs
index 11a16148..ed3d1e55 100644
--- a/crates/turtle/src/atuin_server/router.rs
+++ b/crates/turtle/src/atuin_server/router.rs
@@ -19,7 +19,7 @@ use crate::atuin_server::{
};
use crate::atuin_server_database::{Database, DbError, models::User};
-pub struct UserAuth(pub User);
+pub(crate) struct UserAuth(pub(crate) User);
impl<DB: Send + Sync> FromRequestParts<AppState<DB>> for UserAuth
where
@@ -101,12 +101,12 @@ async fn semver(request: Request, next: Next) -> Response {
}
#[derive(Clone)]
-pub struct AppState<DB: Database> {
- pub database: DB,
- pub settings: Settings,
+pub(crate) struct AppState<DB: Database> {
+ pub(crate) database: DB,
+ pub(crate) settings: Settings,
}
-pub fn router<DB: Database>(database: DB, settings: Settings) -> Router {
+pub(crate) fn router<DB: Database>(database: DB, settings: Settings) -> Router {
let mut routes = Router::new()
.route("/", get(handlers::index))
.route("/healthz", get(handlers::health::health_check));
diff --git a/crates/turtle/src/atuin_server/settings.rs b/crates/turtle/src/atuin_server/settings.rs
index 2bce0dac..1d0ac2d0 100644
--- a/crates/turtle/src/atuin_server/settings.rs
+++ b/crates/turtle/src/atuin_server/settings.rs
@@ -7,11 +7,11 @@ use fs_err::{File, create_dir_all};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct Metrics {
+pub(crate) struct Metrics {
#[serde(alias = "enabled")]
- pub enable: bool,
- pub host: String,
- pub port: u16,
+ pub(crate) enable: bool,
+ pub(crate) host: String,
+ pub(crate) port: u16,
}
impl Default for Metrics {
@@ -25,35 +25,35 @@ impl Default for Metrics {
}
#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct Settings {
- pub host: String,
- pub port: u16,
- pub path: String,
- pub open_registration: bool,
- pub max_history_length: usize,
- pub max_record_size: usize,
- pub page_size: i64,
- pub register_webhook_url: Option<String>,
- pub register_webhook_username: String,
- pub metrics: Metrics,
+pub(crate) struct Settings {
+ pub(crate) host: String,
+ pub(crate) port: u16,
+ pub(crate) path: String,
+ pub(crate) open_registration: bool,
+ pub(crate) max_history_length: usize,
+ pub(crate) max_record_size: usize,
+ pub(crate) page_size: i64,
+ pub(crate) register_webhook_url: Option<String>,
+ pub(crate) register_webhook_username: String,
+ pub(crate) metrics: Metrics,
/// Enable legacy sync v1 routes (history-based sync)
/// Set to false to use only the newer record-based sync
- pub sync_v1_enabled: bool,
+ pub(crate) sync_v1_enabled: bool,
/// Advertise a version that is not what we are _actually_ running
/// Many clients compare their version with api.atuin.sh, and if they differ, notify the user
/// that an update is available.
/// Now that we take beta releases, we should be able to advertise a different version to avoid
/// notifying users when the server runs something that is not a stable release.
- pub fake_version: Option<String>,
+ pub(crate) fake_version: Option<String>,
#[serde(flatten)]
- pub db_settings: DbSettings,
+ pub(crate) db_settings: DbSettings,
}
impl Settings {
- pub fn new() -> Result<Self> {
+ pub(crate) fn new() -> Result<Self> {
let mut config_file = if let Ok(p) = std::env::var("ATUIN_CONFIG_DIR") {
PathBuf::from(p)
} else {
diff --git a/crates/turtle/src/atuin_server/utils.rs b/crates/turtle/src/atuin_server/utils.rs
index 12e9ac1b..cceef3ed 100644
--- a/crates/turtle/src/atuin_server/utils.rs
+++ b/crates/turtle/src/atuin_server/utils.rs
@@ -1,7 +1,7 @@
use eyre::Result;
use semver::{Version, VersionReq};
-pub fn client_version_min(user_agent: &str, req: &str) -> Result<bool> {
+pub(crate) fn client_version_min(user_agent: &str, req: &str) -> Result<bool> {
if user_agent.is_empty() {
return Ok(false);
}
diff --git a/crates/turtle/src/atuin_server_database/calendar.rs b/crates/turtle/src/atuin_server_database/calendar.rs
index 2229667b..f1c78262 100644
--- a/crates/turtle/src/atuin_server_database/calendar.rs
+++ b/crates/turtle/src/atuin_server_database/calendar.rs
@@ -3,16 +3,16 @@
use serde::{Deserialize, Serialize};
use time::Month;
-pub enum TimePeriod {
+pub(crate) enum TimePeriod {
Year,
Month { year: i32 },
Day { year: i32, month: Month },
}
#[derive(Debug, Serialize, Deserialize)]
-pub struct TimePeriodInfo {
- pub count: u64,
+pub(crate) struct TimePeriodInfo {
+ pub(crate) count: u64,
// TODO: Use this for merkle tree magic
- pub hash: String,
+ pub(crate) hash: String,
}
diff --git a/crates/turtle/src/atuin_server_database/mod.rs b/crates/turtle/src/atuin_server_database/mod.rs
index 91077b84..e4672bb0 100644
--- a/crates/turtle/src/atuin_server_database/mod.rs
+++ b/crates/turtle/src/atuin_server_database/mod.rs
@@ -1,5 +1,5 @@
-pub mod calendar;
-pub mod models;
+pub(crate) mod calendar;
+pub(crate) mod models;
use std::{
collections::HashMap,
@@ -18,7 +18,7 @@ use time::{Date, Duration, Month, OffsetDateTime, PrimitiveDateTime, Time, UtcOf
use tracing::instrument;
#[derive(Debug)]
-pub enum DbError {
+pub(crate) enum DbError {
NotFound,
Other(eyre::Report),
}
@@ -52,24 +52,24 @@ impl From<sqlx::Error> for DbError {
impl std::error::Error for DbError {}
-pub type DbResult<T> = Result<T, DbError>;
+pub(crate) type DbResult<T> = Result<T, DbError>;
#[derive(Debug, PartialEq)]
-pub enum DbType {
+pub(crate) enum DbType {
Postgres,
Sqlite,
Unknown,
}
#[derive(Clone, Deserialize, Serialize)]
-pub struct DbSettings {
- pub db_uri: String,
+pub(crate) struct DbSettings {
+ pub(crate) db_uri: String,
/// Optional URI for read replicas. If set, read-only queries will use this connection.
- pub read_db_uri: Option<String>,
+ pub(crate) read_db_uri: Option<String>,
}
impl DbSettings {
- pub fn db_type(&self) -> DbType {
+ pub(crate) fn db_type(&self) -> DbType {
if self.db_uri.starts_with("postgres://") || self.db_uri.starts_with("postgresql://") {
DbType::Postgres
} else if self.db_uri.starts_with("sqlite://") {
@@ -109,7 +109,7 @@ impl Debug for DbSettings {
}
#[async_trait]
-pub trait Database: Sized + Clone + Send + Sync + 'static {
+pub(crate) trait Database: Sized + Clone + Send + Sync + 'static {
async fn new(settings: &DbSettings) -> DbResult<Self>;
async fn get_session(&self, token: &str) -> DbResult<Session>;
@@ -238,7 +238,7 @@ pub trait Database: Sized + Clone + Send + Sync + 'static {
}
}
-pub fn into_utc(x: OffsetDateTime) -> PrimitiveDateTime {
+pub(crate) fn into_utc(x: OffsetDateTime) -> PrimitiveDateTime {
let x = x.to_offset(UtcOffset::UTC);
PrimitiveDateTime::new(x.date(), x.time())
}
diff --git a/crates/turtle/src/atuin_server_database/models.rs b/crates/turtle/src/atuin_server_database/models.rs
index b71a9bc9..e47d614d 100644
--- a/crates/turtle/src/atuin_server_database/models.rs
+++ b/crates/turtle/src/atuin_server_database/models.rs
@@ -1,52 +1,52 @@
use time::OffsetDateTime;
-pub struct History {
- pub id: i64,
- pub client_id: String, // a client generated ID
- pub user_id: i64,
- pub hostname: String,
- pub timestamp: OffsetDateTime,
+pub(crate) struct History {
+ pub(crate) id: i64,
+ pub(crate) client_id: String, // a client generated ID
+ pub(crate) user_id: i64,
+ pub(crate) hostname: String,
+ pub(crate) timestamp: OffsetDateTime,
/// All the data we have about this command, encrypted.
///
/// Currently this is an encrypted msgpack object, but this may change in the future.
- pub data: String,
+ pub(crate) data: String,
- pub created_at: OffsetDateTime,
+ pub(crate) created_at: OffsetDateTime,
}
-pub struct NewHistory {
- pub client_id: String,
- pub user_id: i64,
- pub hostname: String,
- pub timestamp: OffsetDateTime,
+pub(crate) struct NewHistory {
+ pub(crate) client_id: String,
+ pub(crate) user_id: i64,
+ pub(crate) hostname: String,
+ pub(crate) timestamp: OffsetDateTime,
/// All the data we have about this command, encrypted.
///
/// Currently this is an encrypted msgpack object, but this may change in the future.
- pub data: String,
+ pub(crate) data: String,
}
-pub struct User {
- pub id: i64,
- pub username: String,
- pub email: String,
- pub password: String,
+pub(crate) struct User {
+ pub(crate) id: i64,
+ pub(crate) username: String,
+ pub(crate) email: String,
+ pub(crate) password: String,
}
-pub struct Session {
- pub id: i64,
- pub user_id: i64,
- pub token: String,
+pub(crate) struct Session {
+ pub(crate) id: i64,
+ pub(crate) user_id: i64,
+ pub(crate) token: String,
}
-pub struct NewUser {
- pub username: String,
- pub email: String,
- pub password: String,
+pub(crate) struct NewUser {
+ pub(crate) username: String,
+ pub(crate) email: String,
+ pub(crate) password: String,
}
-pub struct NewSession {
- pub user_id: i64,
- pub token: String,
+pub(crate) struct NewSession {
+ pub(crate) user_id: i64,
+ pub(crate) token: String,
}
diff --git a/crates/turtle/src/atuin_server_postgres/mod.rs b/crates/turtle/src/atuin_server_postgres/mod.rs
index 96bcb7c2..e06f8721 100644
--- a/crates/turtle/src/atuin_server_postgres/mod.rs
+++ b/crates/turtle/src/atuin_server_postgres/mod.rs
@@ -23,7 +23,7 @@ mod wrappers;
const MIN_PG_VERSION: u32 = 14;
#[derive(Clone)]
-pub struct Postgres {
+pub(crate) struct Postgres {
pool: sqlx::Pool<sqlx::postgres::Postgres>,
/// Optional read replica pool for read-only queries
read_pool: Option<sqlx::Pool<sqlx::postgres::Postgres>>,
diff --git a/crates/turtle/src/atuin_server_postgres/wrappers.rs b/crates/turtle/src/atuin_server_postgres/wrappers.rs
index 214b255d..ba7a9435 100644
--- a/crates/turtle/src/atuin_server_postgres/wrappers.rs
+++ b/crates/turtle/src/atuin_server_postgres/wrappers.rs
@@ -4,10 +4,10 @@ use crate::atuin_server_database::models::{History, Session, User};
use sqlx::{Row, postgres::PgRow};
use time::PrimitiveDateTime;
-pub struct DbUser(pub User);
-pub struct DbSession(pub Session);
-pub struct DbHistory(pub History);
-pub struct DbRecord(pub Record<EncryptedData>);
+pub(crate) struct DbUser(pub(crate) User);
+pub(crate) struct DbSession(pub(crate) Session);
+pub(crate) struct DbHistory(pub(crate) History);
+pub(crate) struct DbRecord(pub(crate) Record<EncryptedData>);
impl<'a> FromRow<'a, PgRow> for DbUser {
fn from_row(row: &'a PgRow) -> Result<Self> {
diff --git a/crates/turtle/src/atuin_server_sqlite/mod.rs b/crates/turtle/src/atuin_server_sqlite/mod.rs
index bc40db3f..b1de511d 100644
--- a/crates/turtle/src/atuin_server_sqlite/mod.rs
+++ b/crates/turtle/src/atuin_server_sqlite/mod.rs
@@ -18,7 +18,7 @@ use wrappers::{DbHistory, DbRecord, DbSession, DbUser};
mod wrappers;
#[derive(Clone)]
-pub struct Sqlite {
+pub(crate) struct Sqlite {
pool: sqlx::Pool<sqlx::sqlite::Sqlite>,
}
diff --git a/crates/turtle/src/atuin_server_sqlite/wrappers.rs b/crates/turtle/src/atuin_server_sqlite/wrappers.rs
index 5aa7a982..e7380bce 100644
--- a/crates/turtle/src/atuin_server_sqlite/wrappers.rs
+++ b/crates/turtle/src/atuin_server_sqlite/wrappers.rs
@@ -3,10 +3,10 @@ use crate::atuin_common::record::{EncryptedData, Host, Record};
use crate::atuin_server_database::models::{History, Session, User};
use sqlx::{Row, sqlite::SqliteRow};
-pub struct DbUser(pub User);
-pub struct DbSession(pub Session);
-pub struct DbHistory(pub History);
-pub struct DbRecord(pub Record<EncryptedData>);
+pub(crate) struct DbUser(pub(crate) User);
+pub(crate) struct DbSession(pub(crate) Session);
+pub(crate) struct DbHistory(pub(crate) History);
+pub(crate) struct DbRecord(pub(crate) Record<EncryptedData>);
impl<'a> FromRow<'a, SqliteRow> for DbUser {
fn from_row(row: &'a SqliteRow) -> Result<Self> {