Add listTransactions

This commit is contained in:
Jake Barnby
2025-06-17 21:54:30 -04:00
parent 0b00ce28e0
commit 1e82c7f0ef
3 changed files with 52 additions and 1 deletions
+35
View File
@@ -1621,6 +1621,41 @@ App::post('/v1/databases/transactions/:transactionId/operations')
->dynamic($transaction, Response::MODEL_TRANSACTION);
});
App::get('/v1/databases/transactions')
->desc('List transactions')
->groups(['api', 'database', 'transactions'])
->label('scope', 'transactions.read')
->label('resourceType', RESOURCE_TYPE_DATABASES)
->label('sdk', new Method(
namespace: 'databases',
group: 'transactions',
name: 'listTransactions',
description: '/docs/references/databases/list-transactions.md',
auth: [AuthType::KEY],
responses: [
new SDKResponse(
code: Response::STATUS_CODE_OK,
model: Response::MODEL_TRANSACTION_LIST,
)
],
contentType: ContentType::JSON
))
->param('queries', [], new Transactions(), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries).', true)
->inject('response')
->inject('dbForProject')
->action(function (array $queries, Response $response, Database $dbForProject) {
try {
$queries = Query::parseQueries($queries);
} catch (QueryException $e) {
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
}
$response->dynamic(new Document([
'transactions' => $dbForProject->find('transactions', $queries),
'total' => $dbForProject->count('transactions', $queries),
]), Response::MODEL_TRANSACTION_LIST);
});
App::get('/v1/databases/transactions/:transactionId')
->desc('Get transaction')
->groups(['api', 'database', 'transactions'])
@@ -19,9 +19,9 @@ class Operation extends Validator
private array $actions = [
'create',
'update',
'bulkUpdate',
'upsert',
'delete',
'bulkUpdate',
'bulkDelete',
];
@@ -0,0 +1,16 @@
<?php
namespace Appwrite\Utopia\Database\Validator\Queries;
class Transactions extends Base
{
public const array ALLOWED_ATTRIBUTES = [
'status',
'expiresAt',
];
public function __construct()
{
parent::__construct('functions', self::ALLOWED_ATTRIBUTES);
}
}