diff --git a/packages/events/algolia.cfc b/packages/events/algolia.cfc
index 959da30..278c2f1 100644
--- a/packages/events/algolia.cfc
+++ b/packages/events/algolia.cfc
@@ -2,7 +2,6 @@
-
@@ -26,9 +25,14 @@
-
+
-
+
+
+
+
+
+
@@ -40,8 +44,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/forms/configAlgolia.cfc b/packages/forms/configAlgolia.cfc
index 41f4623..6d35b43 100644
--- a/packages/forms/configAlgolia.cfc
+++ b/packages/forms/configAlgolia.cfc
@@ -27,7 +27,7 @@ component extends="farcry.core.packages.forms.forms" key="algolia" displayName="
FROM #arguments.typename#
GROUP BY datetimeLastUpdated
HAVING count(*) > 1
- ", { }, { datasource=application.dsn_read }).recordcount gt 1;
+ ", { }, { datasource=application.dsn_read }).recordcount gt 0;
}
public void function disambiguateTimestamps(required string typename) {
diff --git a/packages/lib/algolia.cfc b/packages/lib/algolia.cfc
index 462a040..9bec500 100644
--- a/packages/lib/algolia.cfc
+++ b/packages/lib/algolia.cfc
@@ -663,10 +663,21 @@ component {
(not structKeyExists(oContent, "isIndexable") and isIndexable(indexName=indexname, stObject=stObject))
)
) {
- strOut.append('{ "action": "addObject", "indexName": "#indexName#", "body": ');
- processObject(indexName, strOut, arguments.stObject);
- strOut.append(' }, ');
- builtToDate = arguments.stObject.datetimeLastUpdated;
+
+ if (StructKeyExists(arguments.stObject, 'status') AND arguments.stObject['status'] != 'approved') {
+ // remove draft record
+ // Approved only - draft records do not get updated to approved; new records added to index each time object goes to draft
+ strOut.append('{ "action": "deleteObject", "indexName": "#indexName#", "body": ');
+ strOut.append('{ "objectID": "');
+ strOut.append(arguments.stObject.objectid);
+ strOut.append('" } }, ');
+ builtToDate = now();
+ } else {
+ strOut.append('{ "action": "addObject", "indexName": "#indexName#", "body": ');
+ processObject(indexName, strOut, arguments.stObject);
+ strOut.append(' }, ');
+ builtToDate = arguments.stObject.datetimeLastUpdated;
+ }
}
else if (arguments.operation eq "deleted") {
strOut.append('{ "action": "deleteObject", "indexName": "#indexName#", "body": ');
@@ -731,15 +742,25 @@ component {
for (row in qContent) {
for (indexName in indexableTypes[qContent.typename]) {
if (qContent.operation eq "updated") {
+
stContent = oContent.getData(objectid=qContent.objectid);
if (
(structKeyExists(oContent, "isIndexable") and oContent.isIndexable(indexName=indexname, stObject=stContent)) or
(not structKeyExists(oContent, "isIndexable") and isIndexable(indexName=indexname, stObject=stContent))
) {
- strOut.append('{ "action": "addObject", "indexName":"#indexName#", "body": ');
- processObject(indexName, strOut, stContent);
- strOut.append(' }, ');
+ if (StructKeyExists(stContent, 'status') AND stContent['status'] != 'approved') {
+ // remove draft record
+ // Approved only - draft records do not get updated to approved; new records added to index each time object goes to draft
+ strOut.append('{ "action": "deleteObject", "indexName":"#indexName#", "body": ');
+ strOut.append('{ "objectID": "');
+ strOut.append(qContent.objectid);
+ strOut.append('" } }, ');
+ } else {
+ strOut.append('{ "action": "addObject", "indexName":"#indexName#", "body": ');
+ processObject(indexName, strOut, stContent);
+ strOut.append(' }, ');
+ }
}
}
else if (qContent.operation eq "deleted") {
@@ -748,7 +769,7 @@ component {
strOut.append(qContent.objectid);
strOut.append('" } }, ');
}
- }
+ } //indexName
if (
strOut.length() * ((qContent.currentrow+1) / qContent.currentrow) gt arguments.requestSize or
@@ -758,10 +779,11 @@ component {
count = qContent.currentrow;
break;
}
- }
+ } // row
+
processingTime += getTickCount() - start;
- strOut.delete(strOut.length()-2, strOut.length());
+ if (right(strOut, 2) == ', ') strOut.delete(strOut.length()-2, strOut.length());
strOut.append(' ] }');
if (count) {