mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
updated api backend to support count and query
This commit is contained in:
@ -22,6 +22,9 @@
|
||||
package com.kingsrook.qqq.backend.core.actions;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput;
|
||||
@ -41,11 +44,23 @@ public class ActionHelper
|
||||
public static void validateSession(AbstractActionInput request) throws QException
|
||||
{
|
||||
QAuthenticationModuleDispatcher qAuthenticationModuleDispatcher = new QAuthenticationModuleDispatcher();
|
||||
QAuthenticationModuleInterface authenticationModule = qAuthenticationModuleDispatcher.getQModule(request.getAuthenticationMetaData());
|
||||
QAuthenticationModuleInterface authenticationModule = qAuthenticationModuleDispatcher.getQModule(request.getAuthenticationMetaData());
|
||||
if(!authenticationModule.isSessionValid(request.getInstance(), request.getSession()))
|
||||
{
|
||||
throw new QAuthenticationException("Invalid session in request");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public static void editFirstValue(List<Serializable> values, Function<String, String> editFunction)
|
||||
{
|
||||
if(values.size() > 0)
|
||||
{
|
||||
values.set(0, editFunction.apply(String.valueOf(values.get(0))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,9 @@ package com.kingsrook.qqq.backend.core.utils;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.Map;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
@ -31,6 +34,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.ObjectWriter;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.json.JSONArray;
|
||||
@ -219,4 +224,44 @@ public class JsonUtils
|
||||
return (json != null && json.matches("(?s)\\s*\\[.*"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Convert a json object into a QRecord
|
||||
**
|
||||
*******************************************************************************/
|
||||
public static QRecord parseQRecord(JSONObject jsonObject, Map<String, QFieldMetaData> fields)
|
||||
{
|
||||
QRecord record = new QRecord();
|
||||
for(String fieldName : fields.keySet())
|
||||
{
|
||||
QFieldMetaData metaData = fields.get(fieldName);
|
||||
String backendName = metaData.getBackendName() != null ? metaData.getBackendName() : fieldName;
|
||||
switch(metaData.getType())
|
||||
{
|
||||
case INTEGER -> record.setValue(fieldName, jsonObject.optInt(backendName));
|
||||
case DECIMAL -> record.setValue(fieldName, jsonObject.optBigDecimal(backendName, null));
|
||||
case BOOLEAN -> record.setValue(fieldName, jsonObject.optBoolean(backendName));
|
||||
case DATE_TIME ->
|
||||
{
|
||||
String dateTimeString = jsonObject.optString(backendName);
|
||||
if(StringUtils.hasContent(dateTimeString))
|
||||
{
|
||||
try
|
||||
{
|
||||
record.setValue(fieldName, LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_ZONED_DATE_TIME));
|
||||
}
|
||||
catch(DateTimeParseException dtpe1)
|
||||
{
|
||||
record.setValue(fieldName, LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_DATE_TIME));
|
||||
}
|
||||
}
|
||||
}
|
||||
default -> record.setValue(fieldName, jsonObject.optString(backendName));
|
||||
}
|
||||
}
|
||||
|
||||
return (record);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -228,6 +228,10 @@ public class ValueUtils
|
||||
ZoneId zid = (tz == null) ? ZoneId.systemDefault() : tz.toZoneId();
|
||||
return LocalDateTime.ofInstant(c.toInstant(), zid);
|
||||
}
|
||||
else if(value instanceof String s)
|
||||
{
|
||||
return LocalDateTime.parse(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw (new QValueException("Unsupported class " + value.getClass().getName() + " for converting to LocalDateTime."));
|
||||
|
Reference in New Issue
Block a user