Add environmentValues to qInstance

This commit is contained in:
2022-12-14 14:50:45 -06:00
parent 30003b729c
commit 6186b17e92
3 changed files with 97 additions and 0 deletions

View File

@ -149,6 +149,8 @@ public class MetaDataAction
metaDataOutput.setBranding(metaDataInput.getInstance().getBranding());
}
metaDataOutput.setEnvironmentValues(metaDataInput.getInstance().getEnvironmentValues());
// todo post-customization - can do whatever w/ the result if you want?
return metaDataOutput;

View File

@ -45,6 +45,7 @@ public class MetaDataOutput extends AbstractActionOutput
private Map<String, QFrontendReportMetaData> reports;
private Map<String, QFrontendAppMetaData> apps;
private Map<String, QFrontendWidgetMetaData> widgets;
private Map<String, String> environmentValues;
private List<AppTreeNode> appTree;
private QBrandingMetaData branding;
@ -202,4 +203,27 @@ public class MetaDataOutput extends AbstractActionOutput
{
this.branding = branding;
}
/*******************************************************************************
** Getter for environmentValues
**
*******************************************************************************/
public Map<String, String> getEnvironmentValues()
{
return environmentValues;
}
/*******************************************************************************
** Setter for environmentValues
**
*******************************************************************************/
public void setEnvironmentValues(Map<String, String> environmentValues)
{
this.environmentValues = environmentValues;
}
}

View File

@ -50,6 +50,8 @@ import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
import com.kingsrook.qqq.backend.core.modules.authentication.metadata.QAuthenticationMetaData;
import com.kingsrook.qqq.backend.core.utils.StringUtils;
import io.github.cdimascio.dotenv.Dotenv;
import io.github.cdimascio.dotenv.DotenvEntry;
/*******************************************************************************
@ -83,6 +85,8 @@ public class QInstance
private Map<String, QQueueProviderMetaData> queueProviders = new LinkedHashMap<>();
private Map<String, QQueueMetaData> queues = new LinkedHashMap<>();
private Map<String, String> environmentValues = new LinkedHashMap<>();
// todo - lock down the object (no more changes allowed) after it's been validated?
@JsonIgnore
@ -93,6 +97,51 @@ public class QInstance
/*******************************************************************************
**
*******************************************************************************/
public QInstance()
{
loadEnvironmentValues();
}
/*******************************************************************************
**
*******************************************************************************/
private void loadEnvironmentValues()
{
String prefix = "QQQ_ENV_";
for(String name : System.getenv().keySet())
{
String value = System.getenv(name);
addEnvironmentValueIfNameMatchesPrefix(prefix, name, value);
}
Dotenv dotenv = Dotenv.configure().ignoreIfMissing().load();
for(DotenvEntry entry : dotenv.entries())
{
addEnvironmentValueIfNameMatchesPrefix(prefix, entry.getKey(), entry.getValue());
}
}
/*******************************************************************************
**
*******************************************************************************/
private void addEnvironmentValueIfNameMatchesPrefix(String prefix, String name, String value)
{
if(name.startsWith(prefix))
{
name = name.replaceFirst(prefix, "");
environmentValues.put(name, value);
}
}
/*******************************************************************************
** Get the backend for a given table name
*******************************************************************************/
@ -937,4 +986,26 @@ public class QInstance
this.queues = queues;
}
/*******************************************************************************
** Getter for environmentValues
**
*******************************************************************************/
public Map<String, String> getEnvironmentValues()
{
return environmentValues;
}
/*******************************************************************************
** Setter for environmentValues
**
*******************************************************************************/
public void setEnvironmentValues(Map<String, String> environmentValues)
{
this.environmentValues = environmentValues;
}
}