Environment Variables: handling of environment variables in user input

This commit is contained in:
vinodkiran
2023-12-12 14:15:41 +05:30
parent bfa870e56b
commit 947ab9dae6
2 changed files with 32 additions and 1 deletions
+26
View File
@@ -954,3 +954,29 @@ export const getAllValuesFromJson = (obj: any): any[] => {
extractValues(obj)
return values
}
export const replaceEnvVariables = async (question: string, appDataSource: DataSource): Promise<string> => {
// the incoming question can have more than one env variable with the pattern {{ env.VARIABLE_NAME }}
// extract all the env variables from the question and iterate through them
const envVariables = question.match(/{{[^}]*}}/g)
if (envVariables) {
for (const envVariable of envVariables) {
// this is needed as the user can have spaces between the curly braces and the env keyword
// extract the variable name from the env variable
const variableName = envVariable.replace(/{{\s*env.|\s*}}/g, '')
// get the value of the env variable from the database
const variable = await appDataSource.getRepository(Variable).findOneBy({
name: variableName
})
if (variable) {
let value = variable.value
if (variable.type === 'runtime') {
value = process.env[variable.name] as string
}
// replace the env variable with the value from the database
question = question.replace(envVariable, value)
}
}
}
return question
}