treewide: better cross-device sync capabilities; in-database storage
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Id99798df6f7e4470caae8a193c2654aa6a6a6964
This commit is contained in:
parent
5521488a93
commit
f34c78b238
41 changed files with 8806 additions and 138 deletions
|
|
@ -72,6 +72,8 @@ pub fn create_router_with_tls(
|
|||
// Public routes (no auth required)
|
||||
let public_routes = Router::new()
|
||||
.route("/s/{token}", get(routes::social::access_shared_media))
|
||||
// Enhanced sharing: public share access
|
||||
.route("/shared/{token}", get(routes::shares::access_shared))
|
||||
// Kubernetes-style health probes (no auth required for orchestration)
|
||||
.route("/health/live", get(routes::health::liveness))
|
||||
.route("/health/ready", get(routes::health::readiness));
|
||||
|
|
@ -216,6 +218,25 @@ pub fn create_router_with_tls(
|
|||
.route(
|
||||
"/media/{id}/stream/dash/{profile}/{segment}",
|
||||
get(routes::streaming::dash_segment),
|
||||
)
|
||||
// Managed storage (read)
|
||||
.route("/media/{id}/download", get(routes::upload::download_file))
|
||||
.route("/managed/stats", get(routes::upload::managed_stats))
|
||||
// Sync (read)
|
||||
.route("/sync/devices", get(routes::sync::list_devices))
|
||||
.route("/sync/devices/{id}", get(routes::sync::get_device))
|
||||
.route("/sync/changes", get(routes::sync::get_changes))
|
||||
.route("/sync/conflicts", get(routes::sync::list_conflicts))
|
||||
.route("/sync/upload/{id}", get(routes::sync::get_upload_status))
|
||||
.route("/sync/download/{*path}", get(routes::sync::download_file))
|
||||
// Enhanced sharing (read)
|
||||
.route("/shares/outgoing", get(routes::shares::list_outgoing))
|
||||
.route("/shares/incoming", get(routes::shares::list_incoming))
|
||||
.route("/shares/{id}", get(routes::shares::get_share))
|
||||
.route("/shares/{id}/activity", get(routes::shares::get_activity))
|
||||
.route(
|
||||
"/notifications/shares",
|
||||
get(routes::shares::get_notifications),
|
||||
);
|
||||
|
||||
// Write routes: Editor+ required
|
||||
|
|
@ -371,6 +392,49 @@ pub fn create_router_with_tls(
|
|||
post(routes::transcode::start_transcode),
|
||||
)
|
||||
.route("/transcode/{id}", delete(routes::transcode::cancel_session))
|
||||
// Managed storage (write)
|
||||
.route("/upload", post(routes::upload::upload_file))
|
||||
.route(
|
||||
"/media/{id}/move-to-managed",
|
||||
post(routes::upload::move_to_managed),
|
||||
)
|
||||
// Sync (write)
|
||||
.route("/sync/devices", post(routes::sync::register_device))
|
||||
.route("/sync/devices/{id}", put(routes::sync::update_device))
|
||||
.route("/sync/devices/{id}", delete(routes::sync::delete_device))
|
||||
.route(
|
||||
"/sync/devices/{id}/token",
|
||||
post(routes::sync::regenerate_token),
|
||||
)
|
||||
.route("/sync/report", post(routes::sync::report_changes))
|
||||
.route("/sync/ack", post(routes::sync::acknowledge_changes))
|
||||
.route(
|
||||
"/sync/conflicts/{id}/resolve",
|
||||
post(routes::sync::resolve_conflict),
|
||||
)
|
||||
.route("/sync/upload", post(routes::sync::create_upload))
|
||||
.route(
|
||||
"/sync/upload/{id}/chunks/{index}",
|
||||
put(routes::sync::upload_chunk),
|
||||
)
|
||||
.route(
|
||||
"/sync/upload/{id}/complete",
|
||||
post(routes::sync::complete_upload),
|
||||
)
|
||||
.route("/sync/upload/{id}", delete(routes::sync::cancel_upload))
|
||||
// Enhanced sharing (write)
|
||||
.route("/shares", post(routes::shares::create_share))
|
||||
.route("/shares/{id}", patch(routes::shares::update_share))
|
||||
.route("/shares/{id}", delete(routes::shares::delete_share))
|
||||
.route("/shares/batch/delete", post(routes::shares::batch_delete))
|
||||
.route(
|
||||
"/notifications/shares/{id}/read",
|
||||
post(routes::shares::mark_notification_read),
|
||||
)
|
||||
.route(
|
||||
"/notifications/shares/read-all",
|
||||
post(routes::shares::mark_all_read),
|
||||
)
|
||||
.layer(middleware::from_fn(auth::require_editor));
|
||||
|
||||
// Admin-only routes: destructive/config operations
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue