diff --git a/core/src/integrationTest/kotlin/ch/ergon/dope/clauses/UpdateIntegrationTest.kt b/core/src/integrationTest/kotlin/ch/ergon/dope/clauses/UpdateIntegrationTest.kt index 725bf8d1..3dbbf99a 100644 --- a/core/src/integrationTest/kotlin/ch/ergon/dope/clauses/UpdateIntegrationTest.kt +++ b/core/src/integrationTest/kotlin/ch/ergon/dope/clauses/UpdateIntegrationTest.kt @@ -23,20 +23,20 @@ class UpdateIntegrationTest : BaseIntegrationTest() { @Test fun `update to set and unset single attribute`() { - val newField = Field("newField", testBucket.name) + val newFieldName = Field("newFieldName", testBucket.name) val dopeQuery = QueryBuilder() .update( testBucket.useKeys("client:1"), ) .set( - newField, + newFieldName, "newName", ) .unset( nameField, ) .returning( - newField, + newFieldName, nameField, ).build() @@ -44,7 +44,7 @@ class UpdateIntegrationTest : BaseIntegrationTest() { val queryResult = queryWithoutParameters(dopeQuery) val result = queryResult.toMapValues() - assertEquals("newName", result["newField"]) + assertEquals("newName", result["newFieldName"]) assertNull(result["nameField"]) } } diff --git a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/Primitive.kt b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/Primitive.kt index dd8485d7..5e989f47 100644 --- a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/Primitive.kt +++ b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/Primitive.kt @@ -77,8 +77,8 @@ class ObjectPrimitive( ) class ObjectEntryPrimitive( - private val key: TypeExpression, - private val value: TypeExpression, + val key: TypeExpression, + val value: TypeExpression, ) : Resolvable { override fun toDopeQuery(manager: DopeQueryManager): DopeQuery { val keyQuery = key.toDopeQuery(manager) diff --git a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpression.kt b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpression.kt index 0bd67d48..1505957a 100644 --- a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpression.kt +++ b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpression.kt @@ -1,19 +1,24 @@ package ch.ergon.dope.resolvable.expression.unaliased.type.function.`object` import ch.ergon.dope.resolvable.expression.TypeExpression +import ch.ergon.dope.resolvable.expression.unaliased.type.ObjectEntryPrimitive import ch.ergon.dope.resolvable.expression.unaliased.type.function.FunctionExpression import ch.ergon.dope.resolvable.expression.unaliased.type.toDopeType +import ch.ergon.dope.resolvable.expression.unaliased.type.toObjectEntry import ch.ergon.dope.validtype.ObjectType import ch.ergon.dope.validtype.StringType import ch.ergon.dope.validtype.ValidType class ObjectAddExpression( objectExpression: TypeExpression, - newAttributeKey: TypeExpression, - newAttributeValue: TypeExpression, -) : FunctionExpression("OBJECT_ADD", objectExpression, newAttributeKey, newAttributeValue) + objectEntryPrimitive: ObjectEntryPrimitive, +) : FunctionExpression("OBJECT_ADD", objectExpression, objectEntryPrimitive.key, objectEntryPrimitive.value) + +fun TypeExpression.addAttribute(objectEntryPrimitive: ObjectEntryPrimitive) = + ObjectAddExpression(this, objectEntryPrimitive) fun TypeExpression.addAttribute(key: TypeExpression, value: TypeExpression) = - ObjectAddExpression(this, key, value) + addAttribute(key.toObjectEntry(value)) -fun TypeExpression.addAttribute(key: String, value: TypeExpression) = addAttribute(key.toDopeType(), value) +fun TypeExpression.addAttribute(key: String, value: TypeExpression) = + addAttribute(key.toDopeType(), value) diff --git a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectRenameExpression.kt b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectRenameExpression.kt index b5e0c4cf..2ed89bd7 100644 --- a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectRenameExpression.kt +++ b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectRenameExpression.kt @@ -8,26 +8,26 @@ import ch.ergon.dope.validtype.StringType class ObjectRenameExpression( objectExpression: TypeExpression, - oldField: TypeExpression, - newField: TypeExpression, -) : FunctionExpression("OBJECT_RENAME", objectExpression, oldField, newField) + oldFieldName: TypeExpression, + newFieldName: TypeExpression, +) : FunctionExpression("OBJECT_RENAME", objectExpression, oldFieldName, newFieldName) fun TypeExpression.renameAttribute( - oldField: TypeExpression, - newField: TypeExpression, -) = ObjectRenameExpression(this, oldField, newField) + oldFieldName: TypeExpression, + newFieldName: TypeExpression, +) = ObjectRenameExpression(this, oldFieldName, newFieldName) fun TypeExpression.renameAttribute( - oldField: String, - newField: String, -) = renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: String, + newFieldName: String, +) = renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun TypeExpression.renameAttribute( - oldField: TypeExpression, - newField: String, -) = renameAttribute(oldField, newField.toDopeType()) + oldFieldName: TypeExpression, + newFieldName: String, +) = renameAttribute(oldFieldName, newFieldName.toDopeType()) fun TypeExpression.renameAttribute( - oldField: String, - newField: TypeExpression, -) = renameAttribute(oldField.toDopeType(), newField) + oldFieldName: String, + newFieldName: TypeExpression, +) = renameAttribute(oldFieldName.toDopeType(), newFieldName) diff --git a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectValuesExpression.kt b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectValuesExpression.kt index 2f998f58..e9b38907 100644 --- a/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectValuesExpression.kt +++ b/core/src/main/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectValuesExpression.kt @@ -4,10 +4,10 @@ import ch.ergon.dope.resolvable.expression.TypeExpression import ch.ergon.dope.resolvable.expression.unaliased.type.function.FunctionExpression import ch.ergon.dope.validtype.ArrayType import ch.ergon.dope.validtype.ObjectType -import ch.ergon.dope.validtype.StringType +import ch.ergon.dope.validtype.ValidType class ObjectValuesExpression( objectExpression: TypeExpression, -) : FunctionExpression>("OBJECT_VALUES", objectExpression) +) : FunctionExpression>("OBJECT_VALUES", objectExpression) fun TypeExpression.values() = ObjectValuesExpression(this) diff --git a/core/src/test/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpressionTest.kt b/core/src/test/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpressionTest.kt index 3e979ee1..601a540f 100644 --- a/core/src/test/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpressionTest.kt +++ b/core/src/test/kotlin/ch/ergon/dope/resolvable/expression/unaliased/type/function/object/ObjectAddExpressionTest.kt @@ -4,6 +4,7 @@ import ch.ergon.dope.DopeQuery import ch.ergon.dope.DopeQueryManager import ch.ergon.dope.helper.ManagerDependentTest import ch.ergon.dope.helper.someObjectField +import ch.ergon.dope.resolvable.expression.unaliased.type.ObjectEntryPrimitive import ch.ergon.dope.resolvable.expression.unaliased.type.toDopeType import kotlin.test.Test import kotlin.test.assertEquals @@ -16,7 +17,7 @@ class ObjectAddExpressionTest : ManagerDependentTest { val expected = DopeQuery( queryString = "OBJECT_ADD(`objectField`, \"key\", \"value\")", ) - val underTest = ObjectAddExpression(someObjectField(), "key".toDopeType(), "value".toDopeType()) + val underTest = ObjectAddExpression(someObjectField(), ObjectEntryPrimitive("key".toDopeType(), "value".toDopeType())) val actual = underTest.toDopeQuery(manager) @@ -28,7 +29,7 @@ class ObjectAddExpressionTest : ManagerDependentTest { val objectExpression = someObjectField() val newAttributeKey = "key".toDopeType() val newAttributeValue = "value".toDopeType() - val expected = ObjectAddExpression(objectExpression, newAttributeKey, newAttributeValue) + val expected = ObjectAddExpression(objectExpression, ObjectEntryPrimitive(newAttributeKey, newAttributeValue)) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -40,7 +41,7 @@ class ObjectAddExpressionTest : ManagerDependentTest { val objectExpression = someObjectField() val newAttributeKey = "key" val newAttributeValue = "value".toDopeType() - val expected = ObjectAddExpression(objectExpression, newAttributeKey.toDopeType(), newAttributeValue) + val expected = ObjectAddExpression(objectExpression, ObjectEntryPrimitive(newAttributeKey.toDopeType(), newAttributeValue)) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) diff --git a/crystal-map-connector/src/main/kotlin/ch/ergon/dope/extension/type/objectfunction/ObjectFunction.kt b/crystal-map-connector/src/main/kotlin/ch/ergon/dope/extension/type/objectfunction/ObjectFunction.kt index fa34089b..e683988a 100644 --- a/crystal-map-connector/src/main/kotlin/ch/ergon/dope/extension/type/objectfunction/ObjectFunction.kt +++ b/crystal-map-connector/src/main/kotlin/ch/ergon/dope/extension/type/objectfunction/ObjectFunction.kt @@ -106,74 +106,74 @@ fun CMObjectField.removeAttribute(key: String) = toDopeType().removeAttr fun CMObjectField.removeAttribute(key: CMJsonField) = toDopeType().removeAttribute(key.toDopeType()) fun CMObjectField.renameAttribute( - oldField: TypeExpression, - newField: TypeExpression, -) = toDopeType().renameAttribute(oldField, newField) + oldFieldName: TypeExpression, + newFieldName: TypeExpression, +) = toDopeType().renameAttribute(oldFieldName, newFieldName) fun CMObjectField.renameAttribute( - oldField: String, - newField: String, -) = toDopeType().renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: String, + newFieldName: String, +) = toDopeType().renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun CMObjectField.renameAttribute( - oldField: TypeExpression, - newField: String, -) = toDopeType().renameAttribute(oldField, newField.toDopeType()) + oldFieldName: TypeExpression, + newFieldName: String, +) = toDopeType().renameAttribute(oldFieldName, newFieldName.toDopeType()) fun CMObjectField.renameAttribute( - oldField: String, - newField: TypeExpression, -) = toDopeType().renameAttribute(oldField.toDopeType(), newField) + oldFieldName: String, + newFieldName: TypeExpression, +) = toDopeType().renameAttribute(oldFieldName.toDopeType(), newFieldName) fun CMObjectField.renameAttribute( - oldField: CMJsonField, - newField: CMJsonField, -) = toDopeType().renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: CMJsonField, + newFieldName: CMJsonField, +) = toDopeType().renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun CMObjectField.renameAttribute( - oldField: CMJsonField, - newField: String, -) = toDopeType().renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: CMJsonField, + newFieldName: String, +) = toDopeType().renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun CMObjectField.renameAttribute( - oldField: String, - newField: CMJsonField, -) = toDopeType().renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: String, + newFieldName: CMJsonField, +) = toDopeType().renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun CMObjectField.renameAttribute( - oldField: CMJsonField, - newField: TypeExpression, -) = toDopeType().renameAttribute(oldField.toDopeType(), newField) + oldFieldName: CMJsonField, + newFieldName: TypeExpression, +) = toDopeType().renameAttribute(oldFieldName.toDopeType(), newFieldName) fun CMObjectField.renameAttribute( - oldField: TypeExpression, - newField: CMJsonField, -) = toDopeType().renameAttribute(oldField, newField.toDopeType()) + oldFieldName: TypeExpression, + newFieldName: CMJsonField, +) = toDopeType().renameAttribute(oldFieldName, newFieldName.toDopeType()) fun TypeExpression.renameAttribute( - oldField: CMJsonField, - newField: CMJsonField, -) = renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: CMJsonField, + newFieldName: CMJsonField, +) = renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun TypeExpression.renameAttribute( - oldField: CMJsonField, - newField: String, -) = renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: CMJsonField, + newFieldName: String, +) = renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun TypeExpression.renameAttribute( - oldField: String, - newField: CMJsonField, -) = renameAttribute(oldField.toDopeType(), newField.toDopeType()) + oldFieldName: String, + newFieldName: CMJsonField, +) = renameAttribute(oldFieldName.toDopeType(), newFieldName.toDopeType()) fun TypeExpression.renameAttribute( - oldField: CMJsonField, - newField: TypeExpression, -) = renameAttribute(oldField.toDopeType(), newField) + oldFieldName: CMJsonField, + newFieldName: TypeExpression, +) = renameAttribute(oldFieldName.toDopeType(), newFieldName) fun TypeExpression.renameAttribute( - oldField: TypeExpression, - newField: CMJsonField, -) = renameAttribute(oldField, newField.toDopeType()) + oldFieldName: TypeExpression, + newFieldName: CMJsonField, +) = renameAttribute(oldFieldName, newFieldName.toDopeType()) fun CMObjectField.replace(oldValue: TypeExpression, newValue: TypeExpression) = toDopeType().replace(oldValue, newValue) diff --git a/crystal-map-connector/src/test/kotlin/ch/ergon/dope/extensions/type/object/ObjectFunctionTest.kt b/crystal-map-connector/src/test/kotlin/ch/ergon/dope/extensions/type/object/ObjectFunctionTest.kt index ef4dadbc..20c6b27e 100644 --- a/crystal-map-connector/src/test/kotlin/ch/ergon/dope/extensions/type/object/ObjectFunctionTest.kt +++ b/crystal-map-connector/src/test/kotlin/ch/ergon/dope/extensions/type/object/ObjectFunctionTest.kt @@ -22,6 +22,7 @@ import ch.ergon.dope.helper.someCMObjectField import ch.ergon.dope.helper.someCMStringField import ch.ergon.dope.helper.someNumberFieldList import ch.ergon.dope.helper.someObjectField +import ch.ergon.dope.resolvable.expression.unaliased.type.ObjectEntryPrimitive import ch.ergon.dope.resolvable.expression.unaliased.type.function.`object`.ObjectAddExpression import ch.ergon.dope.resolvable.expression.unaliased.type.function.`object`.ObjectConcatExpression import ch.ergon.dope.resolvable.expression.unaliased.type.function.`object`.ObjectFieldExpression @@ -50,7 +51,7 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someCMObjectField() val newAttributeKey = "key".toDopeType() val newAttributeValue = "value".toDopeType() - val expected = ObjectAddExpression(objectExpression.toDopeType(), newAttributeKey, newAttributeValue) + val expected = ObjectAddExpression(objectExpression.toDopeType(), ObjectEntryPrimitive(newAttributeKey, newAttributeValue)) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -62,7 +63,7 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someCMObjectField() val newAttributeKey = "key" val newAttributeValue = "value".toDopeType() - val expected = ObjectAddExpression(objectExpression.toDopeType(), newAttributeKey.toDopeType(), newAttributeValue) + val expected = ObjectAddExpression(objectExpression.toDopeType(), ObjectEntryPrimitive(newAttributeKey.toDopeType(), newAttributeValue)) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -74,7 +75,7 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someCMObjectField() val newAttributeKey = someCMStringField() val newAttributeValue = someNumberFieldList() - val expected = ObjectAddExpression(objectExpression.toDopeType(), newAttributeKey.toDopeType(), newAttributeValue) + val expected = ObjectAddExpression(objectExpression.toDopeType(), ObjectEntryPrimitive(newAttributeKey.toDopeType(), newAttributeValue)) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -86,7 +87,10 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someCMObjectField() val newAttributeKey = someCMStringField() val newAttributeValue = someCMNumberList() - val expected = ObjectAddExpression(objectExpression.toDopeType(), newAttributeKey.toDopeType(), newAttributeValue.toDopeType()) + val expected = ObjectAddExpression( + objectExpression.toDopeType(), + ObjectEntryPrimitive(newAttributeKey.toDopeType(), newAttributeValue.toDopeType()), + ) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -98,7 +102,10 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someObjectField() val newAttributeKey = someCMStringField() val newAttributeValue = someCMNumberList() - val expected = ObjectAddExpression(objectExpression, newAttributeKey.toDopeType(), newAttributeValue.toDopeType()) + val expected = ObjectAddExpression( + objectExpression, + ObjectEntryPrimitive(newAttributeKey.toDopeType(), newAttributeValue.toDopeType()), + ) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -110,7 +117,10 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someCMObjectField() val newAttributeKey = "key" val newAttributeValue = someCMNumberList() - val expected = ObjectAddExpression(objectExpression.toDopeType(), newAttributeKey.toDopeType(), newAttributeValue.toDopeType()) + val expected = ObjectAddExpression( + objectExpression.toDopeType(), + ObjectEntryPrimitive(newAttributeKey.toDopeType(), newAttributeValue.toDopeType()), + ) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -122,7 +132,7 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someObjectField() val newAttributeKey = "key".toDopeType() val newAttributeValue = someCMNumberList() - val expected = ObjectAddExpression(objectExpression, newAttributeKey, newAttributeValue.toDopeType()) + val expected = ObjectAddExpression(objectExpression, ObjectEntryPrimitive(newAttributeKey, newAttributeValue.toDopeType())) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue) @@ -134,7 +144,7 @@ class ObjectFunctionTest : ManagerDependentTest { val objectExpression = someCMObjectField() val newAttributeKey = "key".toDopeType() val newAttributeValue = someCMNumberList() - val expected = ObjectAddExpression(objectExpression.toDopeType(), newAttributeKey, newAttributeValue.toDopeType()) + val expected = ObjectAddExpression(objectExpression.toDopeType(), ObjectEntryPrimitive(newAttributeKey, newAttributeValue.toDopeType())) val actual = objectExpression.addAttribute(newAttributeKey, newAttributeValue)