mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
adds target object in subscriber model
This commit is contained in:
@@ -1722,28 +1722,6 @@ $commonCollections = [
|
||||
'$id' => ID::custom('subscribers'),
|
||||
'name' => 'Subscribers',
|
||||
'attributes' => [
|
||||
[
|
||||
'$id' => ID::custom('userId'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => Database::LENGTH_KEY,
|
||||
'signed' => true,
|
||||
'required' => true,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => [],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('userInternalId'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => Database::LENGTH_KEY,
|
||||
'signed' => true,
|
||||
'required' => true,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => [],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('targetId'),
|
||||
'type' => Database::VAR_STRING,
|
||||
@@ -1790,20 +1768,6 @@ $commonCollections = [
|
||||
],
|
||||
],
|
||||
'indexes' => [
|
||||
[
|
||||
'$id' => ID::custom('_key_userId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['userId'],
|
||||
'lengths' => [],
|
||||
'orders' => [],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_userInternalId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['userInternalId'],
|
||||
'lengths' => [],
|
||||
'orders' => [],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_targetId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
|
||||
@@ -1946,10 +1946,8 @@ App::post('/v1/messaging/topics/:topicId/subscribers')
|
||||
'$id' => $subscriberId,
|
||||
'$permissions' => [
|
||||
Permission::read(Role::user($user->getId())),
|
||||
Permission::delete(Role::user($target->getAttribute('userId'))),
|
||||
Permission::delete(Role::user($user->getId())),
|
||||
],
|
||||
'userId' => $user->getId(),
|
||||
'userInternalId' => $user->getInternalId(),
|
||||
'topicId' => $topicId,
|
||||
'topicInternalId' => $topic->getInternalId(),
|
||||
'targetId' => $targetId,
|
||||
@@ -1967,7 +1965,9 @@ App::post('/v1/messaging/topics/:topicId/subscribers')
|
||||
->setParam('topicId', $topic->getId())
|
||||
->setParam('subscriberId', $subscriber->getId());
|
||||
|
||||
$subscriber->setAttribute('userName', $user->getAttribute('name'));
|
||||
$subscriber
|
||||
->setAttribute('target', $target)
|
||||
->setAttribute('userName', $user->getAttribute('name'));
|
||||
|
||||
$response
|
||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||
@@ -2019,12 +2019,11 @@ App::get('/v1/messaging/topics/:topicId/subscribers')
|
||||
|
||||
$subscribers = batch(\array_map(function (Document $subscriber) use ($dbForProject) {
|
||||
return function () use ($subscriber, $dbForProject) {
|
||||
$user = Authorization::skip(fn () => $dbForProject->getDocument('users', $subscriber->getAttribute('userId')));
|
||||
$target = Authorization::skip(fn () => $dbForProject->getDocument('targets', $subscriber->getAttribute('targetId')));
|
||||
$user = Authorization::skip(fn () => $dbForProject->getDocument('users', $target->getAttribute('userId')));
|
||||
|
||||
return $subscriber
|
||||
->setAttribute('identifier', $target->getAttribute('identifier'))
|
||||
->setAttribute('providerType', $target->getAttribute('providerType'))
|
||||
->setAttribute('target', $target)
|
||||
->setAttribute('userName', $user->getAttribute('name'));
|
||||
};
|
||||
}, $subscribers));
|
||||
@@ -2148,12 +2147,11 @@ App::get('/v1/messaging/topics/:topicId/subscribers/:subscriberId')
|
||||
throw new Exception(Exception::SUBSCRIBER_NOT_FOUND);
|
||||
}
|
||||
|
||||
$user = Authorization::skip(fn () => $dbForProject->getDocument('users', $subscriber->getAttribute('userId')));
|
||||
$target = Authorization::skip(fn () => $dbForProject->getDocument('targets', $subscriber->getAttribute('targetId')));
|
||||
$user = Authorization::skip(fn () => $dbForProject->getDocument('users', $target->getAttribute('userId')));
|
||||
|
||||
$subscriber
|
||||
->setAttribute('identifier', $target->getAttribute('identifier'))
|
||||
->setAttribute('providerType', $target->getAttribute('providerType'))
|
||||
->setAttribute('target', $target)
|
||||
->setAttribute('userName', $user->getAttribute('name'));
|
||||
|
||||
$response
|
||||
|
||||
@@ -34,23 +34,20 @@ class Subscriber extends Model
|
||||
'default' => '',
|
||||
'example' => '259125845563242502',
|
||||
])
|
||||
->addRule('providerType', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'Target\'s provider type.',
|
||||
'default' => '',
|
||||
'example' => 'email',
|
||||
])
|
||||
->addRule('identifier', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'Target identifier.',
|
||||
'default' => '',
|
||||
'example' => 'random-email@mail.org',
|
||||
])
|
||||
->addRule('userId', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'User ID.',
|
||||
'default' => '',
|
||||
'example' => '5e5ea5c16897e',
|
||||
->addRule('target', [
|
||||
'type' => Response::MODEL_TARGET,
|
||||
'description' => 'Target.',
|
||||
'default' => [],
|
||||
'example' => [
|
||||
'$id' => '259125845563242502',
|
||||
'$createdAt' => self::TYPE_DATETIME_EXAMPLE,
|
||||
'$updatedAt' => self::TYPE_DATETIME_EXAMPLE,
|
||||
'providerType' => 'email',
|
||||
'providerId' => '259125845563242502',
|
||||
'name' => 'ageon-app-email',
|
||||
'identifier' => 'random-mail@email.org',
|
||||
'userId' => '5e5ea5c16897e',
|
||||
],
|
||||
])
|
||||
->addRule('userName', [
|
||||
'type' => self::TYPE_STRING,
|
||||
|
||||
@@ -333,7 +333,8 @@ trait MessagingBase
|
||||
]);
|
||||
|
||||
$this->assertEquals(201, $response['headers']['status-code']);
|
||||
$this->assertEquals($target['body']['userId'], $response['body']['userId']);
|
||||
$this->assertEquals($target['body']['userId'], $response['body']['target']['userId']);
|
||||
$this->assertEquals($target['body']['providerType'], $response['body']['target']['providerType']);
|
||||
|
||||
$topic = $this->client->call(Client::METHOD_GET, '/messaging/topics/' . $topic['$id'], [
|
||||
'content-type' => 'application/json',
|
||||
@@ -370,9 +371,9 @@ trait MessagingBase
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertEquals($data['topicId'], $response['body']['topicId']);
|
||||
$this->assertEquals($data['targetId'], $response['body']['targetId']);
|
||||
$this->assertEquals($data['userId'], $response['body']['userId']);
|
||||
$this->assertEquals($data['providerType'], $response['body']['providerType']);
|
||||
$this->assertEquals($data['identifier'], $response['body']['identifier']);
|
||||
$this->assertEquals($data['userId'], $response['body']['target']['userId']);
|
||||
$this->assertEquals($data['providerType'], $response['body']['target']['providerType']);
|
||||
$this->assertEquals($data['identifier'], $response['body']['target']['identifier']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -388,9 +389,9 @@ trait MessagingBase
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertEquals(1, $response['body']['total']);
|
||||
$this->assertEquals($data['userId'], $response['body']['subscribers'][0]['userId']);
|
||||
$this->assertEquals($data['providerType'], $response['body']['subscribers'][0]['providerType']);
|
||||
$this->assertEquals($data['identifier'], $response['body']['subscribers'][0]['identifier']);
|
||||
$this->assertEquals($data['userId'], $response['body']['subscribers'][0]['target']['userId']);
|
||||
$this->assertEquals($data['providerType'], $response['body']['subscribers'][0]['target']['providerType']);
|
||||
$this->assertEquals($data['identifier'], $response['body']['subscribers'][0]['target']['identifier']);
|
||||
$this->assertEquals(\count($response['body']['subscribers']), $response['body']['total']);
|
||||
|
||||
return $data;
|
||||
|
||||
Reference in New Issue
Block a user