fix: CI 无 DB 下 clippy 通过 + 失败时也发飞书通知
Some checks failed
Secrets CLI - Build & Release / 探测 Runner (push) Successful in 1s
Secrets CLI - Build & Release / Build (aarch64-apple-darwin) (push) Has been skipped
Secrets CLI - Build & Release / Build (x86_64-unknown-linux-musl) (push) Has been skipped
Secrets CLI - Build & Release / 版本 & Release (push) Successful in 2s
Secrets CLI - Build & Release / 质量检查 (fmt / clippy / test) (push) Successful in 34s
Secrets CLI - Build & Release / 发布草稿 Release (push) Has been cancelled
Secrets CLI - Build & Release / 通知 (push) Has been cancelled
Secrets CLI - Build & Release / Build (x86_64-pc-windows-msvc) (push) Has been cancelled
Some checks failed
Secrets CLI - Build & Release / 探测 Runner (push) Successful in 1s
Secrets CLI - Build & Release / Build (aarch64-apple-darwin) (push) Has been skipped
Secrets CLI - Build & Release / Build (x86_64-unknown-linux-musl) (push) Has been skipped
Secrets CLI - Build & Release / 版本 & Release (push) Successful in 2s
Secrets CLI - Build & Release / 质量检查 (fmt / clippy / test) (push) Successful in 34s
Secrets CLI - Build & Release / 发布草稿 Release (push) Has been cancelled
Secrets CLI - Build & Release / 通知 (push) Has been cancelled
Secrets CLI - Build & Release / Build (x86_64-pc-windows-msvc) (push) Has been cancelled
- update.rs: sqlx::query! 改为 query/query_as,不依赖编译期 DB - workflow: build job 加 always() 且 check.result==success,失败时 notify 能执行 Made-with: Cursor
This commit is contained in:
@@ -228,7 +228,7 @@ jobs:
|
|||||||
build-linux:
|
build-linux:
|
||||||
name: Build (x86_64-unknown-linux-musl)
|
name: Build (x86_64-unknown-linux-musl)
|
||||||
needs: [version, probe-runners, check]
|
needs: [version, probe-runners, check]
|
||||||
if: needs.probe-runners.outputs.has_linux == 'true'
|
if: always() && needs.check.result == 'success' && needs.probe-runners.outputs.has_linux == 'true'
|
||||||
runs-on: debian
|
runs-on: debian
|
||||||
timeout-minutes: 1
|
timeout-minutes: 1
|
||||||
steps:
|
steps:
|
||||||
@@ -277,7 +277,7 @@ jobs:
|
|||||||
build-macos:
|
build-macos:
|
||||||
name: Build (aarch64-apple-darwin)
|
name: Build (aarch64-apple-darwin)
|
||||||
needs: [version, probe-runners, check]
|
needs: [version, probe-runners, check]
|
||||||
if: needs.probe-runners.outputs.has_macos == 'true'
|
if: always() && needs.check.result == 'success' && needs.probe-runners.outputs.has_macos == 'true'
|
||||||
runs-on: darwin-arm64
|
runs-on: darwin-arm64
|
||||||
timeout-minutes: 1
|
timeout-minutes: 1
|
||||||
steps:
|
steps:
|
||||||
@@ -324,7 +324,7 @@ jobs:
|
|||||||
build-windows:
|
build-windows:
|
||||||
name: Build (x86_64-pc-windows-msvc)
|
name: Build (x86_64-pc-windows-msvc)
|
||||||
needs: [version, probe-runners, check]
|
needs: [version, probe-runners, check]
|
||||||
if: needs.probe-runners.outputs.has_windows == 'true'
|
if: always() && needs.check.result == 'success' && needs.probe-runners.outputs.has_windows == 'true'
|
||||||
runs-on: windows
|
runs-on: windows
|
||||||
timeout-minutes: 1
|
timeout-minutes: 1
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use serde_json::{Map, Value};
|
use serde_json::{Map, Value};
|
||||||
use sqlx::PgPool;
|
use sqlx::{FromRow, PgPool};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
use super::add::parse_kv;
|
use super::add::parse_kv;
|
||||||
|
|
||||||
|
#[derive(FromRow)]
|
||||||
|
struct UpdateRow {
|
||||||
|
id: Uuid,
|
||||||
|
tags: Vec<String>,
|
||||||
|
metadata: Value,
|
||||||
|
encrypted: Value,
|
||||||
|
}
|
||||||
|
|
||||||
pub struct UpdateArgs<'a> {
|
pub struct UpdateArgs<'a> {
|
||||||
pub namespace: &'a str,
|
pub namespace: &'a str,
|
||||||
pub kind: &'a str,
|
pub kind: &'a str,
|
||||||
@@ -17,16 +26,16 @@ pub struct UpdateArgs<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn run(pool: &PgPool, args: UpdateArgs<'_>) -> Result<()> {
|
pub async fn run(pool: &PgPool, args: UpdateArgs<'_>) -> Result<()> {
|
||||||
let row = sqlx::query!(
|
let row: Option<UpdateRow> = sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, tags, metadata, encrypted
|
SELECT id, tags, metadata, encrypted
|
||||||
FROM secrets
|
FROM secrets
|
||||||
WHERE namespace = $1 AND kind = $2 AND name = $3
|
WHERE namespace = $1 AND kind = $2 AND name = $3
|
||||||
"#,
|
"#,
|
||||||
args.namespace,
|
|
||||||
args.kind,
|
|
||||||
args.name,
|
|
||||||
)
|
)
|
||||||
|
.bind(args.namespace)
|
||||||
|
.bind(args.kind)
|
||||||
|
.bind(args.name)
|
||||||
.fetch_optional(pool)
|
.fetch_optional(pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
@@ -76,17 +85,17 @@ pub async fn run(pool: &PgPool, args: UpdateArgs<'_>) -> Result<()> {
|
|||||||
}
|
}
|
||||||
let encrypted = Value::Object(enc_map);
|
let encrypted = Value::Object(enc_map);
|
||||||
|
|
||||||
sqlx::query!(
|
sqlx::query(
|
||||||
r#"
|
r#"
|
||||||
UPDATE secrets
|
UPDATE secrets
|
||||||
SET tags = $1, metadata = $2, encrypted = $3, updated_at = NOW()
|
SET tags = $1, metadata = $2, encrypted = $3, updated_at = NOW()
|
||||||
WHERE id = $4
|
WHERE id = $4
|
||||||
"#,
|
"#,
|
||||||
&tags,
|
|
||||||
metadata,
|
|
||||||
encrypted,
|
|
||||||
row.id,
|
|
||||||
)
|
)
|
||||||
|
.bind(&tags)
|
||||||
|
.bind(metadata)
|
||||||
|
.bind(encrypted)
|
||||||
|
.bind(row.id)
|
||||||
.execute(pool)
|
.execute(pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user