Skip to content

Commit bf67789

Browse files
committed
feat: refactor Usage instantiation to use adapter classes for improved flexibility
1 parent 02d9278 commit bf67789

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

README.md

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ use Utopia\Cache\Adapter\None as NoCache;
4343
use Utopia\Database\Adapter\MySQL;
4444
use Utopia\Database\Database;
4545
use Utopia\Usage\Usage;
46+
use Utopia\Usage\Adapter\Database as DatabaseAdapter;
4647

4748
$dbHost = '127.0.0.1';
4849
$dbUser = 'root';
@@ -63,7 +64,8 @@ $database = new Database(new MySQL($pdo), $cache);
6364
$database->setNamespace('namespace');
6465

6566
// Create Usage instance with Database adapter
66-
$usage = Usage::withDatabase($database);
67+
$adapter = new DatabaseAdapter($database);
68+
$usage = new Usage($adapter);
6769
$usage->setup();
6870
```
6971

@@ -77,15 +79,17 @@ The ClickHouse adapter provides high-performance analytics storage for massive s
7779
require_once __DIR__ . '/../../vendor/autoload.php';
7880

7981
use Utopia\Usage\Usage;
82+
use Utopia\Usage\Adapter\ClickHouse;
8083

8184
// Create Usage instance with ClickHouse adapter
82-
$usage = Usage::withClickHouse(
85+
$adapter = new ClickHouse(
8386
host: 'clickhouse-server',
8487
username: 'default',
8588
password: '',
8689
port: 8123,
8790
secure: false
8891
);
92+
$usage = new Usage($adapter);
8993

9094
$usage->setup();
9195
```
@@ -104,7 +108,7 @@ use Utopia\Usage\Adapter\Database;
104108
$adapter = new Database($database);
105109

106110
// Use with Usage
107-
$usage = Usage::withAdapter($adapter);
111+
$usage = new Usage($adapter);
108112
$usage->setup();
109113
```
110114

@@ -207,7 +211,7 @@ $sum = $usage->sumByPeriod('requests', '1h');
207211
**Find with Query Objects**
208212

209213
```php
210-
use Utopia\Usage\Query;
214+
use Utopia\Query\Query;
211215

212216
$metrics = $usage->find([
213217
Query::equal('metric', ['requests', 'bandwidth']),
@@ -224,10 +228,13 @@ $count = $usage->count([
224228
**Purge Old Usage**
225229

226230
```php
231+
use Utopia\Query\Query;
227232
use Utopia\Database\DateTime;
228233

229234
$datetime = DateTime::addSeconds(new \DateTime(), -86400); // Delete metrics older than 24 hours
230-
$usage->purge($datetime);
235+
$usage->purge([
236+
Query::lessThan('time', $datetime),
237+
]);
231238
```
232239

233240
## Periods
@@ -266,7 +273,10 @@ The ClickHouse adapter uses the HTTP interface to store metrics in ClickHouse fo
266273

267274
**Example**:
268275
```php
269-
$usage = Usage::withClickHouse(
276+
use Utopia\Usage\Usage;
277+
use Utopia\Usage\Adapter\ClickHouse;
278+
279+
$adapter = new ClickHouse(
270280
host: 'clickhouse.example.com',
271281
username: 'metrics_user',
272282
password: 'secure_password',
@@ -275,9 +285,9 @@ $usage = Usage::withClickHouse(
275285
);
276286

277287
// Enable async inserts (server-side batching)
278-
$adapter = $usage->getAdapter();
279288
$adapter->setAsyncInserts(true, waitForConfirmation: true);
280289

290+
$usage = new Usage($adapter);
281291
$usage->setup();
282292
```
283293

@@ -294,7 +304,7 @@ Extend the `Utopia\Usage\Adapter` abstract class and implement these methods:
294304
- `getBetweenDates(string $metric, string $startDate, string $endDate, array $queries): array` - Get metrics in date range
295305
- `countByPeriod(string $metric, string $period, array $queries): int` - Count metrics
296306
- `sumByPeriod(string $metric, string $period, array $queries): int` - Sum metric values
297-
- `purge(string $datetime): bool` - Delete old metrics
307+
- `purge(array $queries = []): bool` - Delete old metrics
298308
- `find(array $queries): array` - Find metrics with query objects
299309
- `count(array $queries): int` - Count metrics with query objects
300310

0 commit comments

Comments
 (0)