feat: support custom env variables (#1675)

* custom envs

* feat: custom envs

* only on non cloud

* remove unecessary imports
This commit is contained in:
Ruben Fiszel
2023-06-05 17:42:57 +02:00
committed by GitHub
parent 970a3c6dd3
commit 98e1fdd898
14 changed files with 199 additions and 76 deletions
+14 -4
View File
@@ -70,6 +70,8 @@ pub struct ScriptWDraft {
pub schema: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub draft_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub envs: Option<Vec<String>>,
}
pub fn global_service() -> Router {
@@ -363,11 +365,18 @@ async fn create_script(
};
let needs_lock_gen = lock.is_none();
let envs = ns.envs.as_ref().map(|x| x.as_slice());
let envs = if ns.envs.is_none() || ns.envs.as_ref().unwrap().is_empty() {
None
} else {
envs
};
//::text::json is to ensure we use serde_json with preserve order
sqlx::query!(
"INSERT INTO script (workspace_id, hash, path, parent_hashes, summary, description, \
content, created_by, schema, is_template, extra_perms, lock, language, kind, tag, draft_only) \
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::text::json, $10, $11, $12, $13, $14, $15, $16)",
content, created_by, schema, is_template, extra_perms, lock, language, kind, tag, draft_only, envs) \
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::text::json, $10, $11, $12, $13, $14, $15, $16, $17)",
&w_id,
&hash.0,
ns.path,
@@ -383,7 +392,8 @@ async fn create_script(
ns.language: ScriptLang,
ns.kind.unwrap_or(ScriptKind::Script): ScriptKind,
ns.tag,
ns.draft_only
ns.draft_only,
envs
)
.execute(&mut tx)
.await?;
@@ -550,7 +560,7 @@ async fn get_script_by_path_w_draft(
let mut tx = user_db.begin(&authed).await?;
let script_o = sqlx::query_as::<_, ScriptWDraft>(
"SELECT hash, script.path, summary, description, content, language, kind, tag, schema, draft_only, draft.value as draft FROM script LEFT JOIN draft ON
"SELECT hash, script.path, summary, description, content, language, kind, tag, schema, draft_only, envs, draft.value as draft FROM script LEFT JOIN draft ON
script.path = draft.path AND script.workspace_id = draft.workspace_id AND draft.typ = 'script'
WHERE script.path = $1 AND script.workspace_id = $2 \
AND script.created_at = (SELECT max(created_at) FROM script WHERE path = $1 AND \