Skip to content

Commit b93a3c0

Browse files
committed
Fixed RD-15259: Ignore redundant user provided custom objects
1 parent 67a5db8 commit b93a3c0

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

src/main/scala/com/rawlabs/das/salesforce/DASSalesforce.scala

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -70,33 +70,43 @@ class DASSalesforce(options: Map[String, String]) extends DASSdk with StrictLogg
7070
contentDocumentLinkTable,
7171
contentVersionTable)
7272

73+
private val maybeDatedConversionRateTable: Option[DASSalesforceDatedConversionRateTable] = {
74+
try {
75+
val description = connector.describeSObject("DatedConversionRate")
76+
logger.info(s"Found DatedConversionRate (${description.getName})")
77+
Some(new DASSalesforceDatedConversionRateTable(connector))
78+
} catch {
79+
case e: ApiException =>
80+
logger.warn("DatedConversionRate not found", e)
81+
None
82+
}
83+
}
84+
7385
private val dynamicTableNames = {
7486
options.get("dynamic_objects") match {
7587
case Some(objectNames) =>
7688
val objs = objectNames.strip()
7789
if (objs.isEmpty) {
7890
Seq.empty
7991
} else {
80-
objs.split(",").map(_.strip).filter(_.nonEmpty).toSeq
92+
// Get the names of the static tables to avoid duplicates
93+
val staticNames = staticTables.map(_.salesforceObjectName).toSet ++ maybeDatedConversionRateTable
94+
.map(_.salesforceObjectName)
95+
.toSet
96+
objs
97+
.split(",")
98+
.map(_.strip)
99+
.filter(_.nonEmpty)
100+
.distinct // Remove duplicates
101+
.filterNot(staticNames.contains) // Ignore duplicates of static tables
102+
.toSeq
81103
}
82104
case None => Seq.empty
83105
}
84106
}
85107

86108
logger.debug(s"Dynamic tables: $dynamicTableNames")
87109

88-
private val maybeDatedConversionRateTable: Option[DASSalesforceDatedConversionRateTable] = {
89-
try {
90-
val description = connector.describeSObject("DatedConversionRate")
91-
logger.info(s"Found DatedConversionRate (${description.getName})")
92-
Some(new DASSalesforceDatedConversionRateTable(connector))
93-
} catch {
94-
case e: ApiException =>
95-
logger.warn("DatedConversionRate not found", e)
96-
None
97-
}
98-
}
99-
100110
private val dynamicTables = dynamicTableNames.map(name => new DASSalesforceDynamicTable(connector, name))
101111

102112
private val allTables = staticTables ++ dynamicTables ++ maybeDatedConversionRateTable

0 commit comments

Comments
 (0)