Skip to content

Commit

Permalink
Bypass compile-time query check (#317)
Browse files Browse the repository at this point in the history
  • Loading branch information
Geometrically committed Mar 7, 2022
1 parent 18f34b4 commit 3883c50
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 42 deletions.
32 changes: 0 additions & 32 deletions sqlx-data.json
Original file line number Diff line number Diff line change
Expand Up @@ -3764,38 +3764,6 @@
"nullable": []
}
},
"b464a2ca83b073d251ae2a5bd3ed94167c2dfc2046b38b6ef3aa30c46aaf5ad9": {
"query": "\n SELECT d.dependency_id, vd.mod_id, d.mod_dependency_id\n FROM versions v\n INNER JOIN dependencies d ON d.dependent_id = v.id\n LEFT JOIN versions vd ON d.dependency_id = vd.id\n WHERE v.mod_id = $1\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "dependency_id",
"type_info": "Int8"
},
{
"ordinal": 1,
"name": "mod_id",
"type_info": "Int8"
},
{
"ordinal": 2,
"name": "mod_dependency_id",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Int8"
]
},
"nullable": [
true,
false,
true
]
}
},
"b69a6f42965b3e7103fcbf46e39528466926789ff31e9ed2591bb175527ec169": {
"query": "\n DELETE FROM users\n WHERE id = $1\n ",
"describe": {
Expand Down
20 changes: 10 additions & 10 deletions src/routes/projects.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use actix_web::web::Data;
use actix_web::{delete, get, patch, post, web, HttpRequest, HttpResponse};
use futures::StreamExt;
use serde::{Deserialize, Serialize};
use sqlx::PgPool;
use sqlx::{PgPool, Row};
use std::sync::Arc;
use validator::Validate;

Expand Down Expand Up @@ -110,27 +110,27 @@ pub async fn dependency_list(

use futures::stream::TryStreamExt;

let dependencies = sqlx::query!(
//TODO: This query is not checked at compile time! Once SQLX parses this query correctly, please use the query! macro instead
let dependencies = sqlx::query(
"
SELECT d.dependency_id, vd.mod_id, d.mod_dependency_id
FROM versions v
INNER JOIN dependencies d ON d.dependent_id = v.id
LEFT JOIN versions vd ON d.dependency_id = vd.id
WHERE v.mod_id = $1
",
id as database::models::ProjectId
)
.bind(id as database::models::ProjectId)
.fetch_many(&**pool)
.try_filter_map(|e| async {
Ok(e.right().map(|x| {
(
x.dependency_id.map(database::models::VersionId),
if x.mod_id == 0 {
None
} else {
Some(database::models::ProjectId(x.mod_id))
},
x.mod_dependency_id.map(database::models::ProjectId),
x.get::<Option<i64>, usize>(0)
.map(database::models::VersionId),
x.get::<Option<i64>, usize>(1)
.map(database::models::ProjectId),
x.get::<Option<i64>, usize>(2)
.map(database::models::ProjectId),
)
}))
})
Expand Down

0 comments on commit 3883c50

Please sign in to comment.