Skip to content

Commit

Permalink
feat: add notification roles to conversation and update related refer…
Browse files Browse the repository at this point in the history
…ences

- Introduced 'notificationRoles' array schema in CreateConversation and UpdateConversation requests.
- Updated related reference types to 'RelatedAggregateReference'.
- Added external hostname and publishing details to MySqlDatabase and Extension schemas, respectively.
- Enhanced multiple request and response structures across the Marketplace and User interactions with additional fields and modifications.
  • Loading branch information
mittwald-machine committed Nov 13, 2024
1 parent d9338be commit 2351543
Show file tree
Hide file tree
Showing 56 changed files with 2,976 additions and 230 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,14 @@ class CreateConversationRequest
'format' => 'uuid',
'type' => 'string',
],
'notificationRoles' => [
'items' => [
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.NotificationRole',
],
'type' => 'array',
],
'relatedTo' => [
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.AggregateReference',
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.RelatedAggregateReference',
],
'sharedWith' => [
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.ShareableAggregateReference',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@

use InvalidArgumentException;
use JsonSchema\Validator;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\AggregateReference;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\NotificationRole;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative1;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative2;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative3;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative4;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative5;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative6;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative1;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative2;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative3;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative4;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative5;
use Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative6;

class CreateConversationRequestBody
{
Expand All @@ -28,8 +32,14 @@ class CreateConversationRequestBody
'format' => 'uuid',
'type' => 'string',
],
'notificationRoles' => [
'items' => [
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.NotificationRole',
],
'type' => 'array',
],
'relatedTo' => [
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.AggregateReference',
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.RelatedAggregateReference',
],
'sharedWith' => [
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.ShareableAggregateReference',
Expand All @@ -45,9 +55,14 @@ class CreateConversationRequestBody

private ?string $mainUserId = null;

private ?AggregateReference $relatedTo = null;
/**
* @var NotificationRole[]|null
*/
private ?array $notificationRoles = null;

private RelatedAggregateReferenceAlternative1|RelatedAggregateReferenceAlternative2|RelatedAggregateReferenceAlternative3|RelatedAggregateReferenceAlternative4|RelatedAggregateReferenceAlternative5|RelatedAggregateReferenceAlternative6|null $relatedTo = null;

private ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4|ShareableAggregateReferenceAlternative5|ShareableAggregateReferenceAlternative6|null $sharedWith = null;
private ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4|null $sharedWith = null;

private ?string $title = null;

Expand All @@ -70,18 +85,27 @@ public function getMainUserId(): ?string

/**
* @return
* \Mittwald\ApiClient\Generated\V2\Schemas\Conversation\AggregateReference|null
* \Mittwald\ApiClient\Generated\V2\Schemas\Conversation\NotificationRole[]|null
*/
public function getNotificationRoles(): ?array
{
return $this->notificationRoles ?? null;
}

/**
* @return
* \Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative1|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative2|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative3|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative4|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative5|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\RelatedAggregateReferenceAlternative6|null
*/
public function getRelatedTo(): ?AggregateReference
public function getRelatedTo(): RelatedAggregateReferenceAlternative1|RelatedAggregateReferenceAlternative2|RelatedAggregateReferenceAlternative3|RelatedAggregateReferenceAlternative4|RelatedAggregateReferenceAlternative5|RelatedAggregateReferenceAlternative6|null
{
return $this->relatedTo ?? null;
return $this->relatedTo;
}

/**
* @return
* \Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative1|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative2|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative3|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative4|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative5|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative6|null
* \Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative1|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative2|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative3|\Mittwald\ApiClient\Generated\V2\Schemas\Conversation\ShareableAggregateReferenceAlternative4|null
*/
public function getSharedWith(): ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4|ShareableAggregateReferenceAlternative5|ShareableAggregateReferenceAlternative6|null
public function getSharedWith(): ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4|null
{
return $this->sharedWith;
}
Expand Down Expand Up @@ -135,7 +159,29 @@ public function withoutMainUserId(): self
return $clone;
}

public function withRelatedTo(AggregateReference $relatedTo): self
/**
* @param NotificationRole[] $notificationRoles
*/
public function withNotificationRoles(array $notificationRoles): self
{
$clone = clone $this;
$clone->notificationRoles = $notificationRoles;

return $clone;
}

public function withoutNotificationRoles(): self
{
$clone = clone $this;
unset($clone->notificationRoles);

return $clone;
}

/**
* @param RelatedAggregateReferenceAlternative1|RelatedAggregateReferenceAlternative2|RelatedAggregateReferenceAlternative3|RelatedAggregateReferenceAlternative4|RelatedAggregateReferenceAlternative5|RelatedAggregateReferenceAlternative6 $relatedTo
*/
public function withRelatedTo(RelatedAggregateReferenceAlternative1|RelatedAggregateReferenceAlternative2|RelatedAggregateReferenceAlternative3|RelatedAggregateReferenceAlternative4|RelatedAggregateReferenceAlternative5|RelatedAggregateReferenceAlternative6 $relatedTo): self
{
$clone = clone $this;
$clone->relatedTo = $relatedTo;
Expand All @@ -152,9 +198,9 @@ public function withoutRelatedTo(): self
}

/**
* @param ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4|ShareableAggregateReferenceAlternative5|ShareableAggregateReferenceAlternative6 $sharedWith
* @param ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4 $sharedWith
*/
public function withSharedWith(ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4|ShareableAggregateReferenceAlternative5|ShareableAggregateReferenceAlternative6 $sharedWith): self
public function withSharedWith(ShareableAggregateReferenceAlternative1|ShareableAggregateReferenceAlternative2|ShareableAggregateReferenceAlternative3|ShareableAggregateReferenceAlternative4 $sharedWith): self
{
$clone = clone $this;
$clone->sharedWith = $sharedWith;
Expand Down Expand Up @@ -215,9 +261,21 @@ public static function buildFromInput(array|object $input, bool $validate = true
if (isset($input->{'mainUserId'})) {
$mainUserId = $input->{'mainUserId'};
}
$notificationRoles = null;
if (isset($input->{'notificationRoles'})) {
$notificationRoles = array_map(fn (string $i): NotificationRole => NotificationRole::from($i), $input->{'notificationRoles'});
}
$relatedTo = null;
if (isset($input->{'relatedTo'})) {
$relatedTo = AggregateReference::buildFromInput($input->{'relatedTo'}, validate: $validate);
$relatedTo = match (true) {
default => throw new InvalidArgumentException("input cannot be mapped to any valid type"),
RelatedAggregateReferenceAlternative1::validateInput($input->{'relatedTo'}, true) => RelatedAggregateReferenceAlternative1::buildFromInput($input->{'relatedTo'}, validate: $validate),
RelatedAggregateReferenceAlternative2::validateInput($input->{'relatedTo'}, true) => RelatedAggregateReferenceAlternative2::buildFromInput($input->{'relatedTo'}, validate: $validate),
RelatedAggregateReferenceAlternative3::validateInput($input->{'relatedTo'}, true) => RelatedAggregateReferenceAlternative3::buildFromInput($input->{'relatedTo'}, validate: $validate),
RelatedAggregateReferenceAlternative4::validateInput($input->{'relatedTo'}, true) => RelatedAggregateReferenceAlternative4::buildFromInput($input->{'relatedTo'}, validate: $validate),
RelatedAggregateReferenceAlternative5::validateInput($input->{'relatedTo'}, true) => RelatedAggregateReferenceAlternative5::buildFromInput($input->{'relatedTo'}, validate: $validate),
RelatedAggregateReferenceAlternative6::validateInput($input->{'relatedTo'}, true) => RelatedAggregateReferenceAlternative6::buildFromInput($input->{'relatedTo'}, validate: $validate),
};
}
$sharedWith = null;
if (isset($input->{'sharedWith'})) {
Expand All @@ -227,8 +285,6 @@ public static function buildFromInput(array|object $input, bool $validate = true
ShareableAggregateReferenceAlternative2::validateInput($input->{'sharedWith'}, true) => ShareableAggregateReferenceAlternative2::buildFromInput($input->{'sharedWith'}, validate: $validate),
ShareableAggregateReferenceAlternative3::validateInput($input->{'sharedWith'}, true) => ShareableAggregateReferenceAlternative3::buildFromInput($input->{'sharedWith'}, validate: $validate),
ShareableAggregateReferenceAlternative4::validateInput($input->{'sharedWith'}, true) => ShareableAggregateReferenceAlternative4::buildFromInput($input->{'sharedWith'}, validate: $validate),
ShareableAggregateReferenceAlternative5::validateInput($input->{'sharedWith'}, true) => ShareableAggregateReferenceAlternative5::buildFromInput($input->{'sharedWith'}, validate: $validate),
ShareableAggregateReferenceAlternative6::validateInput($input->{'sharedWith'}, true) => ShareableAggregateReferenceAlternative6::buildFromInput($input->{'sharedWith'}, validate: $validate),
};
}
$title = null;
Expand All @@ -239,6 +295,7 @@ public static function buildFromInput(array|object $input, bool $validate = true
$obj = new self();
$obj->categoryId = $categoryId;
$obj->mainUserId = $mainUserId;
$obj->notificationRoles = $notificationRoles;
$obj->relatedTo = $relatedTo;
$obj->sharedWith = $sharedWith;
$obj->title = $title;
Expand All @@ -259,13 +316,19 @@ public function toJson(): array
if (isset($this->mainUserId)) {
$output['mainUserId'] = $this->mainUserId;
}
if (isset($this->notificationRoles)) {
$output['notificationRoles'] = array_map(fn (NotificationRole $i): string => $i->value, $this->notificationRoles);
}
if (isset($this->relatedTo)) {
$output['relatedTo'] = $this->relatedTo->toJson();
$output['relatedTo'] = match (true) {
default => throw new InvalidArgumentException("input cannot be mapped to any valid type"),
($this->relatedTo) instanceof RelatedAggregateReferenceAlternative1, ($this->relatedTo) instanceof RelatedAggregateReferenceAlternative2, ($this->relatedTo) instanceof RelatedAggregateReferenceAlternative3, ($this->relatedTo) instanceof RelatedAggregateReferenceAlternative4, ($this->relatedTo) instanceof RelatedAggregateReferenceAlternative5, ($this->relatedTo) instanceof RelatedAggregateReferenceAlternative6 => $this->relatedTo->toJson(),
};
}
if (isset($this->sharedWith)) {
$output['sharedWith'] = match (true) {
default => throw new InvalidArgumentException("input cannot be mapped to any valid type"),
($this->sharedWith) instanceof ShareableAggregateReferenceAlternative1, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative2, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative3, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative4, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative5, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative6 => $this->sharedWith->toJson(),
($this->sharedWith) instanceof ShareableAggregateReferenceAlternative1, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative2, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative3, ($this->sharedWith) instanceof ShareableAggregateReferenceAlternative4 => $this->sharedWith->toJson(),
};
}
if (isset($this->title)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class UpdateConversationRequest
'type' => 'string',
],
'relatedTo' => [
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.AggregateReference',
'$ref' => '#/components/schemas/de.mittwald.v1.conversation.RelatedAggregateReference',
],
'title' => [
'type' => 'string',
Expand Down
Loading

0 comments on commit 2351543

Please sign in to comment.