From cd641a802964a4c82a844ec988c097fd0a813b6a Mon Sep 17 00:00:00 2001 From: Lewis Date: Wed, 10 Dec 2025 20:42:33 +0200 Subject: [PATCH] Other health endpoint --- ...911a8eeed679b0e3d7bbd103732abc912f45e.json | 17 ----- ...5480e44c5f771397e01574d0026e5bac6af55.json | 22 ++++++ ...098fb510afb4c827a41bc3a32ad78ea10184c.json | 70 +++++++++++++++++++ ...61808df3cd63ef71e3711180b7ddb5feda6cd.json | 28 ++++++++ ...effe41494d0c855b0c9314ab56ea8b0fb4e6d.json | 70 +++++++++++++++++++ ...263c0af7b77c8feecc654dde7a71fbab4e1ad.json | 28 ++++++++ ...bd02278d75baec57b7d2c97ba590b52f8e2d9.json | 58 +++++++++++++++ ...0535a34adc5f0b573701f40ff00acb4a64c03.json | 25 +++++++ ...2aabd2cf240669df450be8eeb814a79cb80c7.json | 22 ------ ...f3ef8589de90e39419eeeb4de9721d97cdf48.json | 14 ++++ ...03ebd16ac9a737dee0d51384dc1be80d66c08.json | 23 ++++++ ...3c6c55a91f735832618b464208b70d6a8f580.json | 15 ++++ TODO.md | 1 + src/lib.rs | 1 + 14 files changed, 355 insertions(+), 39 deletions(-) delete mode 100644 .sqlx/query-1ea62c689410d98faa70a5a6075911a8eeed679b0e3d7bbd103732abc912f45e.json create mode 100644 .sqlx/query-3fae97c8a2551c1ef8db06c4cde5480e44c5f771397e01574d0026e5bac6af55.json create mode 100644 .sqlx/query-51809819130908ef3600e5843f6098fb510afb4c827a41bc3a32ad78ea10184c.json create mode 100644 .sqlx/query-5ddd4f1ab0b0d3389b343008f5161808df3cd63ef71e3711180b7ddb5feda6cd.json create mode 100644 .sqlx/query-7b6ca5155c645f2011364594833effe41494d0c855b0c9314ab56ea8b0fb4e6d.json create mode 100644 .sqlx/query-7ce9c5fb943b4217da17c041998263c0af7b77c8feecc654dde7a71fbab4e1ad.json create mode 100644 .sqlx/query-7d8993cdd6f859d38d1e017bbb2bd02278d75baec57b7d2c97ba590b52f8e2d9.json create mode 100644 .sqlx/query-c8e4a48f1944ea78e29ed9c87db0535a34adc5f0b573701f40ff00acb4a64c03.json delete mode 100644 .sqlx/query-ef80f18f4b063df44bbe9bc4a382aabd2cf240669df450be8eeb814a79cb80c7.json create mode 100644 .sqlx/query-f710f54a5b20342e4bc09b94333f3ef8589de90e39419eeeb4de9721d97cdf48.json create mode 100644 .sqlx/query-f9d64855317e32857bf5aa19abe03ebd16ac9a737dee0d51384dc1be80d66c08.json create mode 100644 .sqlx/query-fb7eb6dcbe91352f2d154c384a93c6c55a91f735832618b464208b70d6a8f580.json diff --git a/.sqlx/query-1ea62c689410d98faa70a5a6075911a8eeed679b0e3d7bbd103732abc912f45e.json b/.sqlx/query-1ea62c689410d98faa70a5a6075911a8eeed679b0e3d7bbd103732abc912f45e.json deleted file mode 100644 index 629225d..0000000 --- a/.sqlx/query-1ea62c689410d98faa70a5a6075911a8eeed679b0e3d7bbd103732abc912f45e.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "INSERT INTO records (repo_id, collection, rkey, record_cid) VALUES ($1, $2, $3, $4)\n ON CONFLICT (repo_id, collection, rkey) DO UPDATE SET record_cid = $4, created_at = NOW()", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Uuid", - "Text", - "Text", - "Text" - ] - }, - "nullable": [] - }, - "hash": "1ea62c689410d98faa70a5a6075911a8eeed679b0e3d7bbd103732abc912f45e" -} diff --git a/.sqlx/query-3fae97c8a2551c1ef8db06c4cde5480e44c5f771397e01574d0026e5bac6af55.json b/.sqlx/query-3fae97c8a2551c1ef8db06c4cde5480e44c5f771397e01574d0026e5bac6af55.json new file mode 100644 index 0000000..f7acefd --- /dev/null +++ b/.sqlx/query-3fae97c8a2551c1ef8db06c4cde5480e44c5f771397e01574d0026e5bac6af55.json @@ -0,0 +1,22 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT r.repo_root_cid\n FROM repos r\n JOIN users u ON u.id = r.user_id\n WHERE u.did = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "repo_root_cid", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false + ] + }, + "hash": "3fae97c8a2551c1ef8db06c4cde5480e44c5f771397e01574d0026e5bac6af55" +} diff --git a/.sqlx/query-51809819130908ef3600e5843f6098fb510afb4c827a41bc3a32ad78ea10184c.json b/.sqlx/query-51809819130908ef3600e5843f6098fb510afb4c827a41bc3a32ad78ea10184c.json new file mode 100644 index 0000000..52737ec --- /dev/null +++ b/.sqlx/query-51809819130908ef3600e5843f6098fb510afb4c827a41bc3a32ad78ea10184c.json @@ -0,0 +1,70 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT seq, did, created_at, event_type, commit_cid, prev_cid, ops, blobs, blocks_cids\n FROM repo_seq\n WHERE seq > $1\n ORDER BY seq ASC\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "seq", + "type_info": "Int8" + }, + { + "ordinal": 1, + "name": "did", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "created_at", + "type_info": "Timestamptz" + }, + { + "ordinal": 3, + "name": "event_type", + "type_info": "Text" + }, + { + "ordinal": 4, + "name": "commit_cid", + "type_info": "Text" + }, + { + "ordinal": 5, + "name": "prev_cid", + "type_info": "Text" + }, + { + "ordinal": 6, + "name": "ops", + "type_info": "Jsonb" + }, + { + "ordinal": 7, + "name": "blobs", + "type_info": "TextArray" + }, + { + "ordinal": 8, + "name": "blocks_cids", + "type_info": "TextArray" + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false, + false, + false, + false, + true, + true, + true, + true, + true + ] + }, + "hash": "51809819130908ef3600e5843f6098fb510afb4c827a41bc3a32ad78ea10184c" +} diff --git a/.sqlx/query-5ddd4f1ab0b0d3389b343008f5161808df3cd63ef71e3711180b7ddb5feda6cd.json b/.sqlx/query-5ddd4f1ab0b0d3389b343008f5161808df3cd63ef71e3711180b7ddb5feda6cd.json new file mode 100644 index 0000000..b83ea4c --- /dev/null +++ b/.sqlx/query-5ddd4f1ab0b0d3389b343008f5161808df3cd63ef71e3711180b7ddb5feda6cd.json @@ -0,0 +1,28 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT id, private_key_bytes\n FROM reserved_signing_keys\n WHERE public_key_did_key = $1\n AND used_at IS NULL\n AND expires_at > NOW()\n FOR UPDATE\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "private_key_bytes", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false, + false + ] + }, + "hash": "5ddd4f1ab0b0d3389b343008f5161808df3cd63ef71e3711180b7ddb5feda6cd" +} diff --git a/.sqlx/query-7b6ca5155c645f2011364594833effe41494d0c855b0c9314ab56ea8b0fb4e6d.json b/.sqlx/query-7b6ca5155c645f2011364594833effe41494d0c855b0c9314ab56ea8b0fb4e6d.json new file mode 100644 index 0000000..f95710d --- /dev/null +++ b/.sqlx/query-7b6ca5155c645f2011364594833effe41494d0c855b0c9314ab56ea8b0fb4e6d.json @@ -0,0 +1,70 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT seq, did, created_at, event_type, commit_cid, prev_cid, ops, blobs, blocks_cids\n FROM repo_seq\n WHERE seq = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "seq", + "type_info": "Int8" + }, + { + "ordinal": 1, + "name": "did", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "created_at", + "type_info": "Timestamptz" + }, + { + "ordinal": 3, + "name": "event_type", + "type_info": "Text" + }, + { + "ordinal": 4, + "name": "commit_cid", + "type_info": "Text" + }, + { + "ordinal": 5, + "name": "prev_cid", + "type_info": "Text" + }, + { + "ordinal": 6, + "name": "ops", + "type_info": "Jsonb" + }, + { + "ordinal": 7, + "name": "blobs", + "type_info": "TextArray" + }, + { + "ordinal": 8, + "name": "blocks_cids", + "type_info": "TextArray" + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false, + false, + false, + false, + true, + true, + true, + true, + true + ] + }, + "hash": "7b6ca5155c645f2011364594833effe41494d0c855b0c9314ab56ea8b0fb4e6d" +} diff --git a/.sqlx/query-7ce9c5fb943b4217da17c041998263c0af7b77c8feecc654dde7a71fbab4e1ad.json b/.sqlx/query-7ce9c5fb943b4217da17c041998263c0af7b77c8feecc654dde7a71fbab4e1ad.json new file mode 100644 index 0000000..d40aeae --- /dev/null +++ b/.sqlx/query-7ce9c5fb943b4217da17c041998263c0af7b77c8feecc654dde7a71fbab4e1ad.json @@ -0,0 +1,28 @@ +{ + "db_name": "PostgreSQL", + "query": "\n INSERT INTO repo_seq (did, event_type, commit_cid, prev_cid, ops, blobs, blocks_cids)\n VALUES ($1, $2, $3, $4, $5, $6, $7)\n RETURNING seq\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "seq", + "type_info": "Int8" + } + ], + "parameters": { + "Left": [ + "Text", + "Text", + "Text", + "Text", + "Jsonb", + "TextArray", + "TextArray" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7ce9c5fb943b4217da17c041998263c0af7b77c8feecc654dde7a71fbab4e1ad" +} diff --git a/.sqlx/query-7d8993cdd6f859d38d1e017bbb2bd02278d75baec57b7d2c97ba590b52f8e2d9.json b/.sqlx/query-7d8993cdd6f859d38d1e017bbb2bd02278d75baec57b7d2c97ba590b52f8e2d9.json new file mode 100644 index 0000000..baefa30 --- /dev/null +++ b/.sqlx/query-7d8993cdd6f859d38d1e017bbb2bd02278d75baec57b7d2c97ba590b52f8e2d9.json @@ -0,0 +1,58 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT s.did, k.key_bytes, u.id as user_id, u.email as current_email,\n u.email_confirmation_code, u.email_confirmation_code_expires_at,\n u.email_pending_verification\n FROM sessions s\n JOIN users u ON s.did = u.did\n JOIN user_keys k ON u.id = k.user_id\n WHERE s.access_jwt = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "did", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "key_bytes", + "type_info": "Bytea" + }, + { + "ordinal": 2, + "name": "user_id", + "type_info": "Uuid" + }, + { + "ordinal": 3, + "name": "current_email", + "type_info": "Text" + }, + { + "ordinal": 4, + "name": "email_confirmation_code", + "type_info": "Text" + }, + { + "ordinal": 5, + "name": "email_confirmation_code_expires_at", + "type_info": "Timestamptz" + }, + { + "ordinal": 6, + "name": "email_pending_verification", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false, + false, + false, + false, + true, + true, + true + ] + }, + "hash": "7d8993cdd6f859d38d1e017bbb2bd02278d75baec57b7d2c97ba590b52f8e2d9" +} diff --git a/.sqlx/query-c8e4a48f1944ea78e29ed9c87db0535a34adc5f0b573701f40ff00acb4a64c03.json b/.sqlx/query-c8e4a48f1944ea78e29ed9c87db0535a34adc5f0b573701f40ff00acb4a64c03.json new file mode 100644 index 0000000..edac01c --- /dev/null +++ b/.sqlx/query-c8e4a48f1944ea78e29ed9c87db0535a34adc5f0b573701f40ff00acb4a64c03.json @@ -0,0 +1,25 @@ +{ + "db_name": "PostgreSQL", + "query": "\n INSERT INTO reserved_signing_keys (did, public_key_did_key, private_key_bytes, expires_at)\n VALUES ($1, $2, $3, $4)\n RETURNING id\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Uuid" + } + ], + "parameters": { + "Left": [ + "Text", + "Text", + "Bytea", + "Timestamptz" + ] + }, + "nullable": [ + false + ] + }, + "hash": "c8e4a48f1944ea78e29ed9c87db0535a34adc5f0b573701f40ff00acb4a64c03" +} diff --git a/.sqlx/query-ef80f18f4b063df44bbe9bc4a382aabd2cf240669df450be8eeb814a79cb80c7.json b/.sqlx/query-ef80f18f4b063df44bbe9bc4a382aabd2cf240669df450be8eeb814a79cb80c7.json deleted file mode 100644 index f07d990..0000000 --- a/.sqlx/query-ef80f18f4b063df44bbe9bc4a382aabd2cf240669df450be8eeb814a79cb80c7.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT record_cid FROM records WHERE repo_id = $1", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "record_cid", - "type_info": "Text" - } - ], - "parameters": { - "Left": [ - "Uuid" - ] - }, - "nullable": [ - false - ] - }, - "hash": "ef80f18f4b063df44bbe9bc4a382aabd2cf240669df450be8eeb814a79cb80c7" -} diff --git a/.sqlx/query-f710f54a5b20342e4bc09b94333f3ef8589de90e39419eeeb4de9721d97cdf48.json b/.sqlx/query-f710f54a5b20342e4bc09b94333f3ef8589de90e39419eeeb4de9721d97cdf48.json new file mode 100644 index 0000000..7b02604 --- /dev/null +++ b/.sqlx/query-f710f54a5b20342e4bc09b94333f3ef8589de90e39419eeeb4de9721d97cdf48.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE reserved_signing_keys SET used_at = NOW() WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Uuid" + ] + }, + "nullable": [] + }, + "hash": "f710f54a5b20342e4bc09b94333f3ef8589de90e39419eeeb4de9721d97cdf48" +} diff --git a/.sqlx/query-f9d64855317e32857bf5aa19abe03ebd16ac9a737dee0d51384dc1be80d66c08.json b/.sqlx/query-f9d64855317e32857bf5aa19abe03ebd16ac9a737dee0d51384dc1be80d66c08.json new file mode 100644 index 0000000..9b359d5 --- /dev/null +++ b/.sqlx/query-f9d64855317e32857bf5aa19abe03ebd16ac9a737dee0d51384dc1be80d66c08.json @@ -0,0 +1,23 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT 1 as one FROM users WHERE LOWER(email) = $1 AND id != $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "one", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Text", + "Uuid" + ] + }, + "nullable": [ + null + ] + }, + "hash": "f9d64855317e32857bf5aa19abe03ebd16ac9a737dee0d51384dc1be80d66c08" +} diff --git a/.sqlx/query-fb7eb6dcbe91352f2d154c384a93c6c55a91f735832618b464208b70d6a8f580.json b/.sqlx/query-fb7eb6dcbe91352f2d154c384a93c6c55a91f735832618b464208b70d6a8f580.json new file mode 100644 index 0000000..1df2336 --- /dev/null +++ b/.sqlx/query-fb7eb6dcbe91352f2d154c384a93c6c55a91f735832618b464208b70d6a8f580.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "\n UPDATE users\n SET email = $1,\n email_pending_verification = NULL,\n email_confirmation_code = NULL,\n email_confirmation_code_expires_at = NULL,\n updated_at = NOW()\n WHERE id = $2\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Uuid" + ] + }, + "nullable": [] + }, + "hash": "fb7eb6dcbe91352f2d154c384a93c6c55a91f735832618b464208b70d6a8f580" +} diff --git a/TODO.md b/TODO.md index c59dbac..40c155b 100644 --- a/TODO.md +++ b/TODO.md @@ -5,6 +5,7 @@ Lewis' corrected big boy todofile ## Server Infrastructure & Proxying - [x] Health Check - [x] Implement `GET /health` endpoint (returns "OK"). + - [x] Implement `GET /xrpc/_health` endpoint (returns "OK"). - [x] Server Description - [x] Implement `com.atproto.server.describeServer` (returns available user domains). - [x] XRPC Proxying diff --git a/src/lib.rs b/src/lib.rs index 715e6b5..20dcb38 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,6 +15,7 @@ use state::AppState; pub fn app(state: AppState) -> Router { Router::new() .route("/health", get(api::server::health)) + .route("/xrpc/_health", get(api::server::health)) .route( "/xrpc/com.atproto.server.describeServer", get(api::server::describe_server),