diff --git a/src/Core/Query/Delete.php b/src/Core/Query/Delete.php
index 94ee1d3..771a21f 100644
--- a/src/Core/Query/Delete.php
+++ b/src/Core/Query/Delete.php
@@ -25,9 +25,11 @@ class Delete extends UpdateBase implements DeleteInterface {
* The data to delete.
* @param array $attribute_keys
* (optional) The keys belonging to attributes.
+ * @param string $entity_type_id
+ * (optional) The type of entity to delete.
*/
- public function __construct(ServerInterface $server, $connector_id, array $data, array $attribute_keys = []) {
- parent::__construct($server, $connector_id, $data, $attribute_keys);
+ public function __construct(ServerInterface $server, $connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '') {
+ parent::__construct($server, $connector_id, $data, $attribute_keys, $entity_type_id);
$this->entityContainer->setAction(EntityInterface::FIELDS_DELETE);
$this->entityContainer->fromArray($data);
}
diff --git a/src/Core/Query/Insert.php b/src/Core/Query/Insert.php
index 6a4338b..fda62e7 100644
--- a/src/Core/Query/Insert.php
+++ b/src/Core/Query/Insert.php
@@ -20,9 +20,11 @@ class Insert extends UpdateBase implements InsertInterface {
* The data to insert.
* @param array $attribute_keys
* (optional) The keys belonging to attributes.
+ * @param string $entity_type_id
+ * (optional) The type of entity to insert.
*/
- public function __construct(ServerInterface $server, $connector_id, array $data, array $attribute_keys = []) {
- parent::__construct($server, $connector_id, $data, $attribute_keys);
+ public function __construct(ServerInterface $server, $connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '') {
+ parent::__construct($server, $connector_id, $data, $attribute_keys, $entity_type_id);
$this->entityContainer->fromArray($data);
}
diff --git a/src/Core/Query/Update.php b/src/Core/Query/Update.php
index cf4d554..1c439f7 100644
--- a/src/Core/Query/Update.php
+++ b/src/Core/Query/Update.php
@@ -25,9 +25,11 @@ class Update extends UpdateBase implements UpdateInterface {
* The data to update.
* @param array $attribute_keys
* (optional) The keys belonging to attributes.
+ * @param string $entity_type_id
+ * (optional) The type of entity to update.
*/
- public function __construct(ServerInterface $server, $connector_id, array $data, array $attribute_keys = []) {
- parent::__construct($server, $connector_id, $data, $attribute_keys);
+ public function __construct(ServerInterface $server, $connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '') {
+ parent::__construct($server, $connector_id, $data, $attribute_keys, $entity_type_id);
$this->entityContainer->setAction(EntityInterface::FIELDS_UPDATE);
$this->entityContainer->fromArray($data);
}
diff --git a/src/Core/Query/UpdateBase.php b/src/Core/Query/UpdateBase.php
index a4a76d1..b05f1f5 100644
--- a/src/Core/Query/UpdateBase.php
+++ b/src/Core/Query/UpdateBase.php
@@ -19,6 +19,13 @@ class UpdateBase extends Query implements UpdateBaseInterface {
*/
protected $connectorId;
+ /**
+ * The type of entity to insert, update or delete.
+ *
+ * @var string
+ */
+ protected $entityTypeId;
+
/**
* An entity container.
*
@@ -41,11 +48,14 @@ class UpdateBase extends Query implements UpdateBaseInterface {
* The data to update.
* @param array $attribute_keys
* (optional) The keys belonging to attributes.
+ * @param string $entity_type_id
+ * (optional) The type of entity to insert, update or delete.
*/
- public function __construct(ServerInterface $server, $connector_id, array &$data, array $attribute_keys = []) {
+ public function __construct(ServerInterface $server, $connector_id, array &$data, array $attribute_keys = [], string $entity_type_id = '') {
parent::__construct($server);
$this->connectorId = $connector_id;
- $this->entityContainer = new EntityContainer($connector_id);
+ $this->entityTypeId = $entity_type_id ?: $connector_id;
+ $this->entityContainer = new EntityContainer($this->entityTypeId);
if (!empty($attribute_keys)) {
if (ArrayHelper::isAssociative($data)) {
diff --git a/src/Core/Server.php b/src/Core/Server.php
index 580b787..e34f3e2 100644
--- a/src/Core/Server.php
+++ b/src/Core/Server.php
@@ -73,22 +73,22 @@ public function get($connector_id) {
/**
* {@inheritdoc}
*/
- public function insert($connector_id, array $data, array $attribute_keys = []) {
- return new Insert($this, $connector_id, $data, $attribute_keys);
+ public function insert($connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '') {
+ return new Insert($this, $connector_id, $data, $attribute_keys, $entity_type_id);
}
/**
* {@inheritdoc}
*/
- public function update($connector_id, array $data, array $attribute_keys = []) {
- return new Update($this, $connector_id, $data, $attribute_keys);
+ public function update($connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '') {
+ return new Update($this, $connector_id, $data, $attribute_keys, $entity_type_id);
}
/**
* {@inheritdoc}
*/
- public function delete($connector_id, array $data, array $attribute_keys = []) {
- return new Delete($this, $connector_id, $data, $attribute_keys);
+ public function delete($connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '') {
+ return new Delete($this, $connector_id, $data, $attribute_keys, $entity_type_id);
}
// --------------------------------------------------------------
diff --git a/src/Core/ServerInterface.php b/src/Core/ServerInterface.php
index e6d5e6f..25801f8 100644
--- a/src/Core/ServerInterface.php
+++ b/src/Core/ServerInterface.php
@@ -31,11 +31,13 @@ public function get($connector_id);
* The data to insert.
* @param array $attribute_keys
* (optional) The keys belonging to attributes.
+ * @param string $entity_type_id
+ * (optional) The type of entity that needs to be inserted.
*
* @return \Afas\Core\Query\Insert
* An insert query.
*/
- public function insert($connector_id, array $data, array $attribute_keys = []);
+ public function insert($connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '');
/**
* Returns an update query object.
@@ -46,11 +48,13 @@ public function insert($connector_id, array $data, array $attribute_keys = []);
* The data to update.
* @param array $attribute_keys
* (optional) The keys belonging to attributes.
+ * @param string $entity_type_id
+ * (optional) The type of entity that needs to be updated.
*
* @return \Afas\Core\Query\Update
* An update query.
*/
- public function update($connector_id, array $data, array $attribute_keys = []);
+ public function update($connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '');
/**
* Returns an update query object.
@@ -61,11 +65,13 @@ public function update($connector_id, array $data, array $attribute_keys = []);
* The data to delete.
* @param array $attribute_keys
* (optional) The keys belonging to attributes.
+ * @param string $entity_type_id
+ * (optional) The type of entity that needs to be deleted.
*
* @return \Afas\Core\Query\Delete
* A delete query.
*/
- public function delete($connector_id, array $data, array $attribute_keys = []);
+ public function delete($connector_id, array $data, array $attribute_keys = [], string $entity_type_id = '');
// --------------------------------------------------------------
// GETTERS
diff --git a/tests/src/Core/ServerTest.php b/tests/src/Core/ServerTest.php
index ca33911..412e801 100644
--- a/tests/src/Core/ServerTest.php
+++ b/tests/src/Core/ServerTest.php
@@ -83,6 +83,44 @@ public function testInsertWithAttributes() {
$this->assertXmlStringEqualsXmlString($expected, $insert->getEntityContainer()->compile());
}
+ /**
+ * @covers ::insert
+ */
+ public function testInsertWithEntityTypeId() {
+ $insert = $this->server->insert('Dummy', [
+ 'DbId' => 12345,
+ ], [], 'Dummy2');
+
+ $expected = '
+
+
+ 12345
+
+
+ ';
+ $this->assertXmlStringEqualsXmlString($expected, $insert->getEntityContainer()->compile());
+ }
+
+ /**
+ * @covers ::insert
+ */
+ public function testInsertWithAttributesAndEntityTypeId() {
+ $insert = $this->server->insert('Dummy', [
+ 'DbId' => 12345,
+ 'CdId' => 10001,
+ 'Foo' => 'Bar',
+ ], ['DbId', 'CdId'], 'Dummy2');
+
+ $expected = '
+
+
+ Bar
+
+
+ ';
+ $this->assertXmlStringEqualsXmlString($expected, $insert->getEntityContainer()->compile());
+ }
+
/**
* @covers ::update
*/
@@ -128,6 +166,44 @@ public function testUpdateWithAttributes() {
$this->assertXmlStringEqualsXmlString($expected, $update->getEntityContainer()->compile());
}
+ /**
+ * @covers ::update
+ */
+ public function testUpdateWithEntityTypeId() {
+ $update = $this->server->update('Dummy', [
+ 'DbId' => 12345,
+ ], [], 'Dummy2');
+
+ $expected = '
+
+
+ 12345
+
+
+ ';
+ $this->assertXmlStringEqualsXmlString($expected, $update->getEntityContainer()->compile());
+ }
+
+ /**
+ * @covers ::update
+ */
+ public function testUpdateWithAttributesAndEntityTypeId() {
+ $update = $this->server->update('Dummy', [
+ 'DbId' => 12345,
+ 'CdId' => 10001,
+ 'Foo' => 'Bar',
+ ], ['DbId', 'CdId'], 'Dummy2');
+
+ $expected = '
+
+
+ Bar
+
+
+ ';
+ $this->assertXmlStringEqualsXmlString($expected, $update->getEntityContainer()->compile());
+ }
+
/**
* @covers ::delete
*/
@@ -173,6 +249,44 @@ public function testDeleteWithAttributes() {
$this->assertXmlStringEqualsXmlString($expected, $delete->getEntityContainer()->compile());
}
+ /**
+ * @covers ::delete
+ */
+ public function testDeleteWithEntityTypeId() {
+ $delete = $this->server->delete('Dummy', [
+ 'DbId' => 12345,
+ ], [], 'Dummy2');
+
+ $expected = '
+
+
+ 12345
+
+
+ ';
+ $this->assertXmlStringEqualsXmlString($expected, $delete->getEntityContainer()->compile());
+ }
+
+ /**
+ * @covers ::delete
+ */
+ public function testDeleteWithAttributesAndEntityTypeId() {
+ $delete = $this->server->delete('Dummy', [
+ 'DbId' => 12345,
+ 'CdId' => 10001,
+ 'Foo' => 'Bar',
+ ], ['DbId', 'CdId'], 'Dummy2');
+
+ $expected = '
+
+
+ Bar
+
+
+ ';
+ $this->assertXmlStringEqualsXmlString($expected, $delete->getEntityContainer()->compile());
+ }
+
/**
* @covers ::getBaseUrl
* @covers ::__construct