Copied from api_gateway, removed REST handlers (port 8080), added tonic-web + CORS for grpc-web browser access. Binary renamed: api-gateway → api Changes: - Package name: api-gateway → api - Deleted src/handlers/ (REST ML endpoints on port 8080) - Added tonic-web 0.13 + tower-http CORS layer - Server::builder().accept_http1(true) for grpc-web - CORS_ORIGINS env var (default http://localhost:5173) - Metrics server on port 9091 (axum) preserved - All 95 lib tests pass, 0 clippy warnings - Added services/api to workspace members Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
83 lines
2.3 KiB
JSON
83 lines
2.3 KiB
JSON
{
|
|
"db_name": "PostgreSQL",
|
|
"query": "\n SELECT\n id, user_id, is_enabled, is_verified,\n enrolled_at as \"enrolled_at: chrono::DateTime<chrono::Utc>\",\n verified_at as \"verified_at: chrono::DateTime<chrono::Utc>\",\n last_used_at as \"last_used_at: chrono::DateTime<chrono::Utc>\",\n backup_codes_remaining, failed_verification_attempts,\n last_failed_attempt_at as \"last_failed_attempt_at: chrono::DateTime<chrono::Utc>\",\n locked_until as \"locked_until: chrono::DateTime<chrono::Utc>\"\n FROM mfa_config\n WHERE user_id = $1\n ",
|
|
"describe": {
|
|
"columns": [
|
|
{
|
|
"ordinal": 0,
|
|
"name": "id",
|
|
"type_info": "Uuid"
|
|
},
|
|
{
|
|
"ordinal": 1,
|
|
"name": "user_id",
|
|
"type_info": "Uuid"
|
|
},
|
|
{
|
|
"ordinal": 2,
|
|
"name": "is_enabled",
|
|
"type_info": "Bool"
|
|
},
|
|
{
|
|
"ordinal": 3,
|
|
"name": "is_verified",
|
|
"type_info": "Bool"
|
|
},
|
|
{
|
|
"ordinal": 4,
|
|
"name": "enrolled_at: chrono::DateTime<chrono::Utc>",
|
|
"type_info": "Timestamptz"
|
|
},
|
|
{
|
|
"ordinal": 5,
|
|
"name": "verified_at: chrono::DateTime<chrono::Utc>",
|
|
"type_info": "Timestamptz"
|
|
},
|
|
{
|
|
"ordinal": 6,
|
|
"name": "last_used_at: chrono::DateTime<chrono::Utc>",
|
|
"type_info": "Timestamptz"
|
|
},
|
|
{
|
|
"ordinal": 7,
|
|
"name": "backup_codes_remaining",
|
|
"type_info": "Int4"
|
|
},
|
|
{
|
|
"ordinal": 8,
|
|
"name": "failed_verification_attempts",
|
|
"type_info": "Int4"
|
|
},
|
|
{
|
|
"ordinal": 9,
|
|
"name": "last_failed_attempt_at: chrono::DateTime<chrono::Utc>",
|
|
"type_info": "Timestamptz"
|
|
},
|
|
{
|
|
"ordinal": 10,
|
|
"name": "locked_until: chrono::DateTime<chrono::Utc>",
|
|
"type_info": "Timestamptz"
|
|
}
|
|
],
|
|
"parameters": {
|
|
"Left": [
|
|
"Uuid"
|
|
]
|
|
},
|
|
"nullable": [
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
true,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
true
|
|
]
|
|
},
|
|
"hash": "c00246b33b871002aa0a1a1a098ced5b5057a1e7cc7a4bf8a4200d4b5777a73b"
|
|
}
|