pass tests; redo removed api fields

This commit is contained in:
2023-03-22 15:21:15 -05:00
parent 4da3cc9206
commit 94d32fa854
7 changed files with 47 additions and 138 deletions

View File

@ -30,7 +30,6 @@ import com.kingsrook.qqq.api.model.APIVersionRange;
import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsInput; import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsInput;
import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsOutput; import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsOutput;
import com.kingsrook.qqq.api.model.metadata.fields.ApiFieldMetaData; import com.kingsrook.qqq.api.model.metadata.fields.ApiFieldMetaData;
import com.kingsrook.qqq.api.model.metadata.fields.RemovedApiFieldMetaData;
import com.kingsrook.qqq.api.model.metadata.tables.ApiTableMetaData; import com.kingsrook.qqq.api.model.metadata.tables.ApiTableMetaData;
import com.kingsrook.qqq.backend.core.actions.AbstractQActionFunction; import com.kingsrook.qqq.backend.core.actions.AbstractQActionFunction;
import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.context.QContext;
@ -80,7 +79,7 @@ public class GetTableApiFieldsAction extends AbstractQActionFunction<GetTableApi
////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////
// look for removed fields (e.g., not currently in the table anymore), that are in this version // // look for removed fields (e.g., not currently in the table anymore), that are in this version //
////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////
for(RemovedApiFieldMetaData removedApiField : CollectionUtils.nonNullList(getRemovedApiFields(table))) for(QFieldMetaData removedApiField : CollectionUtils.nonNullList(getRemovedApiFields(table)))
{ {
APIVersionRange versionRange = getApiVersionRangeForRemovedField(removedApiField); APIVersionRange versionRange = getApiVersionRangeForRemovedField(removedApiField);
@ -99,14 +98,14 @@ public class GetTableApiFieldsAction extends AbstractQActionFunction<GetTableApi
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
private APIVersionRange getApiVersionRangeForRemovedField(RemovedApiFieldMetaData field) private APIVersionRange getApiVersionRangeForRemovedField(QFieldMetaData field)
{ {
ApiFieldMetaData middlewareMetaData = ApiMiddlewareType.getApiFieldMetaData(field); ApiFieldMetaData middlewareMetaData = ApiMiddlewareType.getApiFieldMetaData(field);
if(middlewareMetaData != null && middlewareMetaData.getInitialVersion() != null) if(middlewareMetaData != null && middlewareMetaData.getInitialVersion() != null)
{ {
if(StringUtils.hasContent(field.getFinalVersion())) if(StringUtils.hasContent(middlewareMetaData.getFinalVersion()))
{ {
return (APIVersionRange.betweenAndIncluding(middlewareMetaData.getInitialVersion(), field.getFinalVersion())); return (APIVersionRange.betweenAndIncluding(middlewareMetaData.getInitialVersion(), middlewareMetaData.getFinalVersion()));
} }
else else
{ {
@ -140,7 +139,7 @@ public class GetTableApiFieldsAction extends AbstractQActionFunction<GetTableApi
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
private List<RemovedApiFieldMetaData> getRemovedApiFields(QTableMetaData table) private List<QFieldMetaData> getRemovedApiFields(QTableMetaData table)
{ {
ApiTableMetaData apiTableMetaData = ApiMiddlewareType.getApiTableMetaData(table); ApiTableMetaData apiTableMetaData = ApiMiddlewareType.getApiTableMetaData(table);
if(apiTableMetaData != null) if(apiTableMetaData != null)

View File

@ -31,6 +31,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.QMiddlewareFieldMeta
public class ApiFieldMetaData extends QMiddlewareFieldMetaData public class ApiFieldMetaData extends QMiddlewareFieldMetaData
{ {
private String initialVersion; private String initialVersion;
private String finalVersion;
@ -74,4 +75,35 @@ public class ApiFieldMetaData extends QMiddlewareFieldMetaData
return (this); return (this);
} }
/*******************************************************************************
** Getter for finalVersion
*******************************************************************************/
public String getFinalVersion()
{
return (this.finalVersion);
}
/*******************************************************************************
** Setter for finalVersion
*******************************************************************************/
public void setFinalVersion(String finalVersion)
{
this.finalVersion = finalVersion;
}
/*******************************************************************************
** Fluent setter for finalVersion
*******************************************************************************/
public ApiFieldMetaData withFinalVersion(String finalVersion)
{
this.finalVersion = finalVersion;
return (this);
}
} }

View File

@ -1,121 +0,0 @@
/*
* QQQ - Low-code Application Framework for Engineers.
* Copyright (C) 2021-2023. Kingsrook, LLC
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
* contact@kingsrook.com
* https://github.com/Kingsrook/
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.kingsrook.qqq.api.model.metadata.fields;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
/*******************************************************************************
**
*******************************************************************************/
public class RemovedApiFieldMetaData extends QFieldMetaData
{
private String finalVersion;
private String replacedByFieldName;
/*******************************************************************************
** Constructor
**
*******************************************************************************/
public RemovedApiFieldMetaData()
{
super();
}
/*******************************************************************************
** Constructor
**
*******************************************************************************/
public RemovedApiFieldMetaData(String name, QFieldType type)
{
super(name, type);
}
/*******************************************************************************
** Getter for replacedByFieldName
*******************************************************************************/
public String getReplacedByFieldName()
{
return (this.replacedByFieldName);
}
/*******************************************************************************
** Setter for replacedByFieldName
*******************************************************************************/
public void setReplacedByFieldName(String replacedByFieldName)
{
this.replacedByFieldName = replacedByFieldName;
}
/*******************************************************************************
** Fluent setter for replacedByFieldName
*******************************************************************************/
public RemovedApiFieldMetaData withReplacedByFieldName(String replacedByFieldName)
{
this.replacedByFieldName = replacedByFieldName;
return (this);
}
/*******************************************************************************
** Getter for finalVersion
*******************************************************************************/
public String getFinalVersion()
{
return (this.finalVersion);
}
/*******************************************************************************
** Setter for finalVersion
*******************************************************************************/
public void setFinalVersion(String finalVersion)
{
this.finalVersion = finalVersion;
}
/*******************************************************************************
** Fluent setter for finalVersion
*******************************************************************************/
public RemovedApiFieldMetaData withFinalVersion(String finalVersion)
{
this.finalVersion = finalVersion;
return (this);
}
}

View File

@ -26,7 +26,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.kingsrook.qqq.api.ApiMiddlewareType; import com.kingsrook.qqq.api.ApiMiddlewareType;
import com.kingsrook.qqq.api.model.metadata.fields.ApiFieldMetaData; import com.kingsrook.qqq.api.model.metadata.fields.ApiFieldMetaData;
import com.kingsrook.qqq.api.model.metadata.fields.RemovedApiFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QMiddlewareTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QMiddlewareTableMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
@ -40,7 +39,7 @@ public class ApiTableMetaData extends QMiddlewareTableMetaData
private String initialVersion; private String initialVersion;
private String finalVersion; private String finalVersion;
private List<RemovedApiFieldMetaData> removedApiFields; private List<QFieldMetaData> removedApiFields;
@ -86,7 +85,7 @@ public class ApiTableMetaData extends QMiddlewareTableMetaData
/******************************************************************************* /*******************************************************************************
** Getter for removedApiFields ** Getter for removedApiFields
*******************************************************************************/ *******************************************************************************/
public List<RemovedApiFieldMetaData> getRemovedApiFields() public List<QFieldMetaData> getRemovedApiFields()
{ {
return (this.removedApiFields); return (this.removedApiFields);
} }
@ -96,7 +95,7 @@ public class ApiTableMetaData extends QMiddlewareTableMetaData
/******************************************************************************* /*******************************************************************************
** Setter for removedApiFields ** Setter for removedApiFields
*******************************************************************************/ *******************************************************************************/
public void setRemovedApiFields(List<RemovedApiFieldMetaData> removedApiFields) public void setRemovedApiFields(List<QFieldMetaData> removedApiFields)
{ {
this.removedApiFields = removedApiFields; this.removedApiFields = removedApiFields;
} }
@ -106,7 +105,7 @@ public class ApiTableMetaData extends QMiddlewareTableMetaData
/******************************************************************************* /*******************************************************************************
** Fluent setter for removedApiFields ** Fluent setter for removedApiFields
*******************************************************************************/ *******************************************************************************/
public ApiTableMetaData withRemovedApiFields(List<RemovedApiFieldMetaData> removedApiFields) public ApiTableMetaData withRemovedApiFields(List<QFieldMetaData> removedApiFields)
{ {
this.removedApiFields = removedApiFields; this.removedApiFields = removedApiFields;
return (this); return (this);
@ -117,7 +116,7 @@ public class ApiTableMetaData extends QMiddlewareTableMetaData
/******************************************************************************* /*******************************************************************************
** Fluent setter for a single removedApiField ** Fluent setter for a single removedApiField
*******************************************************************************/ *******************************************************************************/
public ApiTableMetaData withRemovedApiField(RemovedApiFieldMetaData removedApiField) public ApiTableMetaData withRemovedApiField(QFieldMetaData removedApiField)
{ {
if(this.removedApiFields == null) if(this.removedApiFields == null)
{ {

View File

@ -62,6 +62,9 @@ public class TestUtils
qInstance.setAuthentication(new Auth0AuthenticationMetaData().withType(QAuthenticationType.FULLY_ANONYMOUS).withName("anonymous")); qInstance.setAuthentication(new Auth0AuthenticationMetaData().withType(QAuthenticationType.FULLY_ANONYMOUS).withName("anonymous"));
qInstance.withMiddlewareMetaData(new ApiInstanceMetaData() qInstance.withMiddlewareMetaData(new ApiInstanceMetaData()
.withName("TestAPI")
.withDescription("QQQ Test API")
.withContactEmail("contact@kingsrook.com")
.withCurrentVersion(new APIVersion(API_VERSION)) .withCurrentVersion(new APIVersion(API_VERSION))
.withSupportedVersions(List.of(new APIVersion(API_VERSION))) .withSupportedVersions(List.of(new APIVersion(API_VERSION)))
); );

View File

@ -29,7 +29,6 @@ import java.util.stream.Collectors;
import com.kingsrook.qqq.api.BaseTest; import com.kingsrook.qqq.api.BaseTest;
import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsInput; import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsInput;
import com.kingsrook.qqq.api.model.metadata.fields.ApiFieldMetaData; import com.kingsrook.qqq.api.model.metadata.fields.ApiFieldMetaData;
import com.kingsrook.qqq.api.model.metadata.fields.RemovedApiFieldMetaData;
import com.kingsrook.qqq.api.model.metadata.tables.ApiTableMetaData; import com.kingsrook.qqq.api.model.metadata.tables.ApiTableMetaData;
import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.context.QContext;
import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QException;
@ -97,9 +96,7 @@ class GetTableApiFieldsActionTest extends BaseTest
qInstance.addTable(new QTableMetaData() qInstance.addTable(new QTableMetaData()
.withName(TABLE_NAME) .withName(TABLE_NAME)
.withMiddlewareMetaData(new ApiTableMetaData().withInitialVersion("1") .withMiddlewareMetaData(new ApiTableMetaData().withInitialVersion("1")
.withRemovedApiField(((RemovedApiFieldMetaData) new RemovedApiFieldMetaData("c", STRING) .withRemovedApiField(new QFieldMetaData("c", STRING).withMiddlewareMetaData(new ApiFieldMetaData().withInitialVersion("1").withFinalVersion("2")))
.withMiddlewareMetaData(new ApiFieldMetaData().withInitialVersion("1")))
.withFinalVersion("2"))
) )
.withField(new QFieldMetaData("a", STRING)) // inherit versionRange from the table .withField(new QFieldMetaData("a", STRING)) // inherit versionRange from the table
.withField(new QFieldMetaData("b", STRING).withMiddlewareMetaData(new ApiFieldMetaData().withInitialVersion("1"))) .withField(new QFieldMetaData("b", STRING).withMiddlewareMetaData(new ApiFieldMetaData().withInitialVersion("1")))

View File

@ -101,7 +101,7 @@ class QJavalinApiHandlerTest extends BaseTest
System.out.println(response.getBody()); System.out.println(response.getBody());
assertThat(response.getBody()) assertThat(response.getBody())
.contains(""" .contains("""
title: "QQQ API" title: "TestAPI"
""") """)
.contains(""" .contains("""
/person/query: /person/query: