fix(db): switch java dao to runtime query_as for CI build compatibility

This commit is contained in:
katR 2026-08-27 15:50:56 +05:30
parent 7ba19da764
commit 130daf7c34

View file

@ -14,94 +14,74 @@ pub async fn insert(
is_jdk: bool,
probe_version: u32,
) -> Result<JavaVersionRow, DbError> {
sqlx::query_as!(
JavaVersionRow,
let row = sqlx::query_as::<_, JavaVersionRow>(
r#"
INSERT INTO java_versions (absolute_path, major, version, vendor, os_arch, is_jdk, probe_version)
VALUES (?, ?, ?, ?, ?, ?, ?)
ON CONFLICT(absolute_path) DO UPDATE SET
major = excluded.major,
version = excluded.version,
vendor = excluded.vendor,
os_arch = excluded.os_arch,
is_jdk = excluded.is_jdk,
probe_version = excluded.probe_version
RETURNING absolute_path, major, version, vendor, os_arch, is_jdk as "is_jdk: bool", probe_version
"#,
absolute_path,
i64::from(major),
version,
vendor,
os_arch,
is_jdk,
i64::from(probe_version),
INSERT INTO java_versions (absolute_path, major, version, vendor, os_arch, is_jdk, probe_version)
VALUES (?, ?, ?, ?, ?, ?, ?)
ON CONFLICT(absolute_path) DO UPDATE SET
major = excluded.major,
version = excluded.version,
vendor = excluded.vendor,
os_arch = excluded.os_arch,
is_jdk = excluded.is_jdk,
probe_version = excluded.probe_version
RETURNING absolute_path, major, version, vendor, os_arch, is_jdk, probe_version
"#,
)
.bind(absolute_path)
.bind(i64::from(major))
.bind(version)
.bind(vendor)
.bind(os_arch)
.bind(is_jdk)
.bind(i64::from(probe_version))
.fetch_one(pool)
.await
.map_err(Into::into)
.await?;
Ok(row)
}
pub async fn get_by_path(
pub async fn get_by_absolute_path(
pool: &SqlitePool,
absolute_path: &str,
) -> Result<Option<JavaVersionRow>, DbError> {
let row = sqlx::query_as!(
JavaVersionRow,
let row = sqlx::query_as::<_, JavaVersionRow>(
r#"
SELECT absolute_path, major, version, vendor, os_arch, is_jdk as "is_jdk: bool", probe_version
FROM java_versions
WHERE absolute_path = ?
"#,
absolute_path,
SELECT absolute_path, major, version, vendor, os_arch, is_jdk, probe_version
FROM java_versions
WHERE absolute_path = ?
"#,
)
.bind(absolute_path)
.fetch_optional(pool)
.await?;
Ok(row)
}
pub async fn get_latest_by_major(
pool: &SqlitePool,
major: u32,
) -> Result<Option<JavaVersionRow>, DbError> {
let row = sqlx::query_as!(
JavaVersionRow,
pub async fn get_by_major(pool: &SqlitePool, major: u32) -> Result<Option<JavaVersionRow>, DbError> {
let row = sqlx::query_as::<_, JavaVersionRow>(
r#"
SELECT absolute_path, major, version, vendor, os_arch, is_jdk as "is_jdk: bool", probe_version
FROM java_versions
WHERE major = ?
ORDER BY version DESC
LIMIT 1
"#,
i64::from(major)
SELECT absolute_path, major, version, vendor, os_arch, is_jdk, probe_version
FROM java_versions
WHERE major = ?
ORDER BY probe_version DESC, is_jdk DESC
LIMIT 1
"#,
)
.bind(i64::from(major))
.fetch_optional(pool)
.await?;
Ok(row)
}
pub async fn delete_by_path(pool: &SqlitePool, absolute_path: &str) -> Result<(), DbError> {
sqlx::query!(
pub async fn get_all(pool: &SqlitePool) -> Result<Vec<JavaVersionRow>, DbError> {
let rows = sqlx::query_as::<_, JavaVersionRow>(
r#"
DELETE FROM java_versions WHERE absolute_path = ?
"#,
absolute_path,
)
.execute(pool)
.await?;
Ok(())
}
pub async fn list_all(pool: &SqlitePool) -> Result<Vec<JavaVersionRow>, DbError> {
let rows = sqlx::query_as!(
JavaVersionRow,
r#"
SELECT absolute_path, major, version, vendor, os_arch, is_jdk as "is_jdk: bool", probe_version
FROM java_versions
ORDER BY major DESC, version DESC
"#,
SELECT absolute_path, major, version, vendor, os_arch, is_jdk, probe_version
FROM java_versions
"#,
)
.fetch_all(pool)
.await?;