Skip to content

Commit 940e93e

Browse files
author
arutyunyan
committed
Реализация буфера для смешивания данных из разных СУБД
1 parent fd24b5f commit 940e93e

File tree

4 files changed

+50
-8
lines changed

4 files changed

+50
-8
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## v7.3.6 - June 9, 2022
44

55
- Рефакторинг
6+
- Миксинг данных из разных СУБД
67

78
---
89

src/syntax/entity/SuQLArray.php

+8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ abstract class SuQLArray extends SuQLTable implements ArrayInterface
1010
* @var array данные
1111
*/
1212
protected static $data;
13+
/**
14+
* Устанавливает данные
15+
* @param array $data
16+
*/
17+
public static function load($data)
18+
{
19+
static::$data = $data;
20+
}
1321
/**
1422
* Получает данные
1523
* @return array

tests/suql/SqliteTest.php

+25-8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
use PHPUnit\Framework\TestCase;
66
use suql\db\Container;
77
use suql\syntax\Query;
8+
use test\suql\models\buffers\Buffer;
9+
use test\suql\models\Query10;
810
use test\suql\models\Query18;
911

1012
final class SqliteTest extends TestCase
@@ -15,6 +17,8 @@ public function setUp(): void
1517
Container::create(require('config/db-null.php'));
1618
Query::create('create database db_test')->setConnection('connection')->exec();
1719
Container::add(require('config/db.php'));
20+
Query::create('create table table_10(f1 int, f2 int)')->setConnection('db_test')->exec();
21+
Query::create('insert into table_10 (f1, f2) values (1, 1), (2, 2)')->setConnection('db_test')->exec();
1822
}
1923

2024
public function tearDown(): void
@@ -25,22 +29,35 @@ public function tearDown(): void
2529

2630
public function testRealSqliteDb(): void
2731
{
28-
$tmp = Query18::all()
32+
$expected = [
33+
['af1' => '1', 'af2' => '1'],
34+
['af1' => '2', 'af2' => '2'],
35+
['af1' => '3', 'af2' => '3'],
36+
];
37+
$actual = Query18::all()
2938
->select([
3039
'f1' => 'af1',
3140
'f2' => 'af2',
3241
])
3342
->fetchAll();
34-
$this->assertEquals([
35-
['af1' => '1', 'af2' => '1'],
36-
['af1' => '2', 'af2' => '2'],
37-
['af1' => '3', 'af2' => '3'],
38-
], $tmp);
43+
44+
$this->assertEquals($expected, $actual);
3945
}
4046

4147
public function testMixDifferentDatabases(): void
4248
{
43-
// TODO: Написать этот тест - использование вместе Sqlite и MySql
44-
$this->assertTrue(true);
49+
$expected = [
50+
['f1' => '1'],
51+
['f1' => '2'],
52+
];
53+
54+
Buffer::load(
55+
Query18::all()
56+
->select(['f1', 'f2'])
57+
->fetchAll()
58+
);
59+
$actual = Buffer::all()->join(Query10::class)->select(['f1'])->fetchAll();
60+
61+
$this->assertSame($expected, $actual);
4562
}
4663
}

tests/suql/models/buffers/Buffer.php

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace test\suql\models\buffers;
4+
5+
use test\suql\models\arrays\TestArray;
6+
use test\suql\models\Query10;
7+
8+
class Buffer extends TestArray
9+
{
10+
public function relations()
11+
{
12+
return [
13+
Query10::class => ['f1' => 'f1'],
14+
];
15+
}
16+
}

0 commit comments

Comments
 (0)