Skip to content

Commit

Permalink
added /mappings request handlers
Browse files Browse the repository at this point in the history
  • Loading branch information
mfriesen committed May 31, 2024
1 parent e619199 commit 99a36a8
Show file tree
Hide file tree
Showing 10 changed files with 705 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
*/
package com.formkiq.stacks.dynamodb.mappings;

import static com.formkiq.aws.dynamodb.SiteIdKeyGenerator.createDatabaseKey;
import static com.formkiq.aws.dynamodb.objects.Objects.notNull;
import static com.formkiq.aws.dynamodb.objects.Strings.isEmpty;

Expand Down Expand Up @@ -86,7 +87,7 @@ public PaginationResults<MappingRecord> findMappings(final String siteId,

Map<String, AttributeValue> startkey = new PaginationToAttributeValue().apply(token);
QueryConfig config = new QueryConfig().indexName(DbKeys.GSI1).scanIndexForward(Boolean.TRUE);
AttributeValue pk = AttributeValue.fromS(MappingRecord.PREFIX_PK);
AttributeValue pk = AttributeValue.fromS(createDatabaseKey(siteId, MappingRecord.PREFIX_PK));
AttributeValue sk = AttributeValue.fromS(MappingRecord.PREFIX_SK_GSI1);
QueryResponse response = this.db.queryBeginsWith(config, pk, sk, startkey, limit);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import com.formkiq.client.invoker.ApiClient;
import com.formkiq.client.invoker.ApiException;
import com.formkiq.client.model.AttributeSchemaCompositeKey;
import com.formkiq.client.model.AttributeSchemaOptional;
import com.formkiq.client.model.SchemaAttributes;
import com.formkiq.client.model.SetSitesSchemaRequest;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@
import com.formkiq.stacks.api.handler.IndicesFolderMoveRequestHandler;
import com.formkiq.stacks.api.handler.IndicesRequestHandler;
import com.formkiq.stacks.api.handler.IndicesSearchRequestHandler;
import com.formkiq.stacks.api.handler.MappingsIdRequestHandler;
import com.formkiq.stacks.api.handler.MappingsRequestHandler;
import com.formkiq.stacks.api.handler.OnlyOfficeEditRequestHandler;
import com.formkiq.stacks.api.handler.OnlyOfficeNewRequestHandler;
import com.formkiq.stacks.api.handler.OnlyOfficeSaveRequestHandler;
Expand Down Expand Up @@ -150,6 +152,8 @@
import com.formkiq.stacks.dynamodb.WebhooksServiceExtension;
import com.formkiq.stacks.dynamodb.attributes.AttributeService;
import com.formkiq.stacks.dynamodb.attributes.AttributeServiceExtension;
import com.formkiq.stacks.dynamodb.mappings.MappingService;
import com.formkiq.stacks.dynamodb.mappings.MappingServiceExtension;
import com.formkiq.stacks.dynamodb.schemas.SchemaService;
import com.formkiq.stacks.dynamodb.schemas.SchemaServiceExtension;

Expand All @@ -160,76 +164,80 @@
*/
public abstract class AbstractCoreRequestHandler extends AbstractRestApiRequestHandler {

/** Is Public Urls Enabled. */
private static boolean isEnablePublicUrls;
/** Url Class Map. */
private static final Map<String, ApiGatewayRequestHandler> URL_MAP = new HashMap<>();
/** Is Public Urls Enabled. */
private static boolean isEnablePublicUrls;

private static void addAccessControlEndpoints() {
addRequestHandler(new OpaAccessPoliciesRequestHandler());
addRequestHandler(new OpaIdAccessPolicyRequestHandler());
addRequestHandler(new OpaAccessPolicyItemsRequestHandler());
}
/** constructor. */
public AbstractCoreRequestHandler() {}

private static void addDocumentAttributeEndpoints() {
addRequestHandler(new DocumentAttributesRequestHandler());
addRequestHandler(new DocumentAttributeRequestHandler());
addRequestHandler(new DocumentAttributesValueRequestHandler());
}
/**
* Initialize.
*
* @param serviceCache {@link AwsServiceCache}
* @param plugin {@link DocumentTagSchemaPlugin}
*/
public static void initialize(final AwsServiceCache serviceCache,
final DocumentTagSchemaPlugin plugin) {

private static void addEsignatureEndpoints() {
addRequestHandler(new EsignatureDocusignDocumentIdRequestHandler());
addRequestHandler(new EsignatureDocusignConfigRequestHandler());
}
registerExtensions(serviceCache, plugin);

private static void addGroupUsersEndpoints() {
addRequestHandler(new GroupsRequestHandler());
addRequestHandler(new GroupsUsersRequestHandler());
}
if (serviceCache.hasModule("typesense")) {
serviceCache.register(TypeSenseService.class, new TypeSenseServiceExtension());
}

private static void addOnlyOfficeEndpoints() {
addRequestHandler(new OnlyOfficeNewRequestHandler());
addRequestHandler(new OnlyOfficeSaveRequestHandler());
addRequestHandler(new OnlyOfficeEditRequestHandler());
isEnablePublicUrls = isEnablePublicUrls(serviceCache);

buildUrlMap();
}

/**
* Add Url Request Handler Mapping.
*
* @param handler {@link ApiGatewayRequestHandler}
* Register Extensions.
*
* @param serviceCache {@link AwsServiceCache}
* @param schemaEvents {@link DocumentTagSchemaPlugin}
*/
public static void addRequestHandler(final ApiGatewayRequestHandler handler) {
URL_MAP.put(handler.getRequestUrl(), handler);
}

private static void addRulesetsEndpoints() {
addRequestHandler(new RulesetsRequestHandler());
addRequestHandler(new RulesetsIdRequestHandler());
addRequestHandler(new RulesetsRuleRequestHandler());
addRequestHandler(new RulesetsRuleIdRequestHandler());
}

private static void addSystemEndpoints() {
addRequestHandler(new VersionRequestHandler());
addRequestHandler(new SitesRequestHandler());
addRequestHandler(new ConfigurationRequestHandler());
addRequestHandler(new ConfigurationApiKeysRequestHandler());
addRequestHandler(new ConfigurationApiKeyRequestHandler());
addRequestHandler(new SitesOpenSearchIndexRequestHandler());
}
private static void registerExtensions(final AwsServiceCache serviceCache,
final DocumentTagSchemaPlugin schemaEvents) {

private static void addUserActivitiesEndpoints() {
addRequestHandler(new UserActivitiesRequestHandler());
addRequestHandler(new UserActivitiesDocumentIdRequestHandler());
serviceCache.register(CognitoIdentityProviderService.class,
new CognitoIdentityProviderServiceExtension());
serviceCache.register(DocumentVersionService.class, new DocumentVersionServiceExtension());
serviceCache.register(EventService.class, new EventServiceSnsExtension());
serviceCache.register(ActionsNotificationService.class,
new ActionsNotificationServiceExtension());
serviceCache.register(ActionsService.class, new ActionsServiceExtension());
serviceCache.register(SsmService.class, new SsmServiceExtension());
serviceCache.register(S3Service.class, new S3ServiceExtension());
serviceCache.register(S3PresignerService.class, new S3PresignerServiceExtension());
serviceCache.register(SqsService.class, new SqsServiceExtension());
serviceCache.register(DocumentTagSchemaPlugin.class,
new DocumentTagSchemaPluginExtension(schemaEvents));
serviceCache.register(CacheService.class, new DynamoDbCacheServiceExtension());
serviceCache.register(DocumentService.class, new DocumentServiceExtension());
serviceCache.register(DocumentSearchService.class, new DocumentSearchServiceExtension());
serviceCache.register(DocumentCountService.class, new DocumentCountServiceExtension());
serviceCache.register(FolderIndexProcessor.class, new FolderIndexProcessorExtension());
serviceCache.register(ConfigService.class, new ConfigServiceExtension());
serviceCache.register(ApiKeysService.class, new ApiKeysServiceExtension());
serviceCache.register(DocumentSyncService.class, new DocumentSyncServiceExtension());
serviceCache.register(DocumentOcrService.class, new DocumentOcrServiceExtension());
serviceCache.register(DynamoDbService.class, new DynamoDbServiceExtension());
serviceCache.register(WebhooksService.class, new WebhooksServiceExtension());
serviceCache.register(AttributeService.class, new AttributeServiceExtension());
serviceCache.register(SchemaService.class, new SchemaServiceExtension());
serviceCache.register(MappingService.class, new MappingServiceExtension());
}

private static void addWorkflowEndpoints() {
addRequestHandler(new WorkflowsRequestHandler());
addRequestHandler(new WorkflowsIdRequestHandler());
addRequestHandler(new QueuesRequestHandler());
addRequestHandler(new QueueIdRequestHandler());
addRequestHandler(new QueueDocumentsRequestHandler());
addRequestHandler(new WorkflowDocumentsRequestHandler());
/**
* Whether to enable public urls.
*
* @param serviceCache {@link AwsServiceCache}
* @return boolean
*/
private static boolean isEnablePublicUrls(final AwsServiceCache serviceCache) {
return "true".equals(serviceCache.environment().getOrDefault("ENABLE_PUBLIC_URLS", "false"));
}

/**
Expand All @@ -240,8 +248,8 @@ private static void buildUrlMap() {
addSystemEndpoints();
addAccessControlEndpoints();

addRequestHandler(new AttributesRequestHandler());
addRequestHandler(new AttributesIdRequestHandler());
addAttributeRequestHandlers();
addMappingRequestHandlers();

addRequestHandler(new DocumentVersionsRequestHandler());
addRequestHandler(new DocumentVersionsKeyRequestHandler());
Expand Down Expand Up @@ -289,75 +297,82 @@ private static void buildUrlMap() {
addRequestHandler(new SitesSchemaRequestHandler());
}

/**
* Initialize.
*
* @param serviceCache {@link AwsServiceCache}
* @param plugin {@link DocumentTagSchemaPlugin}
*/
public static void initialize(final AwsServiceCache serviceCache,
final DocumentTagSchemaPlugin plugin) {

registerExtensions(serviceCache, plugin);
private static void addSystemEndpoints() {
addRequestHandler(new VersionRequestHandler());
addRequestHandler(new SitesRequestHandler());
addRequestHandler(new ConfigurationRequestHandler());
addRequestHandler(new ConfigurationApiKeysRequestHandler());
addRequestHandler(new ConfigurationApiKeyRequestHandler());
addRequestHandler(new SitesOpenSearchIndexRequestHandler());
}

if (serviceCache.hasModule("typesense")) {
serviceCache.register(TypeSenseService.class, new TypeSenseServiceExtension());
}
private static void addAccessControlEndpoints() {
addRequestHandler(new OpaAccessPoliciesRequestHandler());
addRequestHandler(new OpaIdAccessPolicyRequestHandler());
addRequestHandler(new OpaAccessPolicyItemsRequestHandler());
}

isEnablePublicUrls = isEnablePublicUrls(serviceCache);
private static void addAttributeRequestHandlers() {
addRequestHandler(new AttributesRequestHandler());
addRequestHandler(new AttributesIdRequestHandler());
}

buildUrlMap();
private static void addMappingRequestHandlers() {
addRequestHandler(new MappingsRequestHandler());
addRequestHandler(new MappingsIdRequestHandler());
}

/**
* Whether to enable public urls.
* Add Url Request Handler Mapping.
*
* @param serviceCache {@link AwsServiceCache}
* @return boolean
* @param handler {@link ApiGatewayRequestHandler}
*/
private static boolean isEnablePublicUrls(final AwsServiceCache serviceCache) {
return "true".equals(serviceCache.environment().getOrDefault("ENABLE_PUBLIC_URLS", "false"));
public static void addRequestHandler(final ApiGatewayRequestHandler handler) {
URL_MAP.put(handler.getRequestUrl(), handler);
}

/**
* Register Extensions.
*
* @param serviceCache {@link AwsServiceCache}
* @param schemaEvents {@link DocumentTagSchemaPlugin}
*/
private static void registerExtensions(final AwsServiceCache serviceCache,
final DocumentTagSchemaPlugin schemaEvents) {
private static void addEsignatureEndpoints() {
addRequestHandler(new EsignatureDocusignDocumentIdRequestHandler());
addRequestHandler(new EsignatureDocusignConfigRequestHandler());
}

serviceCache.register(CognitoIdentityProviderService.class,
new CognitoIdentityProviderServiceExtension());
serviceCache.register(DocumentVersionService.class, new DocumentVersionServiceExtension());
serviceCache.register(EventService.class, new EventServiceSnsExtension());
serviceCache.register(ActionsNotificationService.class,
new ActionsNotificationServiceExtension());
serviceCache.register(ActionsService.class, new ActionsServiceExtension());
serviceCache.register(SsmService.class, new SsmServiceExtension());
serviceCache.register(S3Service.class, new S3ServiceExtension());
serviceCache.register(S3PresignerService.class, new S3PresignerServiceExtension());
serviceCache.register(SqsService.class, new SqsServiceExtension());
serviceCache.register(DocumentTagSchemaPlugin.class,
new DocumentTagSchemaPluginExtension(schemaEvents));
serviceCache.register(CacheService.class, new DynamoDbCacheServiceExtension());
serviceCache.register(DocumentService.class, new DocumentServiceExtension());
serviceCache.register(DocumentSearchService.class, new DocumentSearchServiceExtension());
serviceCache.register(DocumentCountService.class, new DocumentCountServiceExtension());
serviceCache.register(FolderIndexProcessor.class, new FolderIndexProcessorExtension());
serviceCache.register(ConfigService.class, new ConfigServiceExtension());
serviceCache.register(ApiKeysService.class, new ApiKeysServiceExtension());
serviceCache.register(DocumentSyncService.class, new DocumentSyncServiceExtension());
serviceCache.register(DocumentOcrService.class, new DocumentOcrServiceExtension());
serviceCache.register(DynamoDbService.class, new DynamoDbServiceExtension());
serviceCache.register(WebhooksService.class, new WebhooksServiceExtension());
serviceCache.register(AttributeService.class, new AttributeServiceExtension());
serviceCache.register(SchemaService.class, new SchemaServiceExtension());
private static void addOnlyOfficeEndpoints() {
addRequestHandler(new OnlyOfficeNewRequestHandler());
addRequestHandler(new OnlyOfficeSaveRequestHandler());
addRequestHandler(new OnlyOfficeEditRequestHandler());
}

/** constructor. */
public AbstractCoreRequestHandler() {}
private static void addGroupUsersEndpoints() {
addRequestHandler(new GroupsRequestHandler());
addRequestHandler(new GroupsUsersRequestHandler());
}

private static void addWorkflowEndpoints() {
addRequestHandler(new WorkflowsRequestHandler());
addRequestHandler(new WorkflowsIdRequestHandler());
addRequestHandler(new QueuesRequestHandler());
addRequestHandler(new QueueIdRequestHandler());
addRequestHandler(new QueueDocumentsRequestHandler());
addRequestHandler(new WorkflowDocumentsRequestHandler());
}

private static void addUserActivitiesEndpoints() {
addRequestHandler(new UserActivitiesRequestHandler());
addRequestHandler(new UserActivitiesDocumentIdRequestHandler());
}

private static void addRulesetsEndpoints() {
addRequestHandler(new RulesetsRequestHandler());
addRequestHandler(new RulesetsIdRequestHandler());
addRequestHandler(new RulesetsRuleRequestHandler());
addRequestHandler(new RulesetsRuleIdRequestHandler());
}

private static void addDocumentAttributeEndpoints() {
addRequestHandler(new DocumentAttributesRequestHandler());
addRequestHandler(new DocumentAttributeRequestHandler());
addRequestHandler(new DocumentAttributesValueRequestHandler());
}

@Override
@SuppressWarnings("returncount")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class AddAttributeRequest {
public AddAttributeRequest() {}

/**
* Set Case.
* Set Attribute.
*
* @param attributeRecord {@link AttributeRecord}
* @return {@link AddAttributeRequest}
Expand All @@ -53,7 +53,7 @@ public AddAttributeRequest attribute(final AttributeRecord attributeRecord) {
}

/**
* Get Case.
* Get Attribute.
*
* @return {@link AttributeRecord}
* @throws BadException BadException
Expand Down
Loading

0 comments on commit 99a36a8

Please sign in to comment.