Rust/Tonic grpc サービスの rpc を作成して、sqlx クレートを介して postgresdb からユーザーを削除しています。として保存しているユーザーIDでユーザーを削除しようとしていますUUID
。Uuid の私のプロト定義は次のとおりです。
message Uuid {
fixed64 lsb = 1;
fixed64 msb = 2;
}
私のUserRequest
定義は次のとおりです。
message UserRequest {
Uuid user_id = 1;
}
ユーザーを削除するための私のrpcは次のとおりです。
async fn delete_user(
&self,
request: Request<UserRequest>,
) -> Result<Response<EmptyResp>, Status> {
let UserRequest {
user_id
} = request.into_inner();
let row = sqlx::query!(
r"
DELETE FROM users WHERE user_id = $1
",
sqlx::types::Uuid(user_id).as_u128(), // how do I convert this to SQLX?
).execute(&self.pool)
.await
.map_err(CustomError::from)?;
if row.rows_affected() == 0 {
return Err(Status::internal(
"Unable to delete user",
));
}
Ok(Response::new(EmptyResp {}))
}
次のエラーが発生します。
error[E0308]: mismatched types
--> src/lib.rs:139:13
|
139 | user_id,
| ^^^^^^^ expected struct `sqlx::types::Uuid`, found struct `lib::Uuid`
|
= note: expected enum `Option<sqlx::types::Uuid>`
found enum `Option<lib::Uuid>`
note: return type inferred to be `Option<sqlx::types::Uuid>` here
--> org-management/src/organization_manager.rs:128:47
|
128 | ) -> Result<Response<EmptyResp>, Status> {
| _______________________________________________^
129 | |
130 | | let UserRequest {
131 | | user_id
... |
153 | |
154 | | }
| |_____^
この行を使用して UUID タイプを sqlx タイプに変換しようとし sqlx::types::Uuid(user_id).as_u128()
ています。ありがとう!