-
Notifications
You must be signed in to change notification settings - Fork 0
/
tasks.php
43 lines (34 loc) · 1.21 KB
/
tasks.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
use \JsonMachine\JsonMachine;
try {
$database = new Dibi\Connection([
'driver' => 'sqlite',
'database' => __DIR__ . '/sqlite/sqlite.sdb',
'profiler' => [
'file' => __DIR__ . '/sqlite/sqlite.log',
],
]);
$database->query('CREATE TABLE IF NOT EXISTS tasks(id INTEGER PRIMARY KEY, name TEXT, project_id INT)');
$directory = __DIR__ . '/data/tasks';
$directory_iterator = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS);
$flattened = new RecursiveIteratorIterator($directory_iterator);
$count = 0;
$regex_iterator = new RegexIterator($flattened, '/\.json$/');
foreach ($regex_iterator as $file) {
$tasks = JsonMachine::fromFile($file->getPathname());
foreach ($tasks as $task) {
$result = $database->query('SELECT * FROM tasks WHERE id = ?', $task['id']);
if(count($result->fetchAll()) === 0) {
$database->query('INSERT INTO tasks', [
'id' => $task['id'],
'name' => $task['name'],
'project_id' => $task['project_id'],
]);
$count++;
}
}
}
echo 'Affected ' . $count . ' results';
} catch (Dibi\Exception $e) {
echo get_class($e), ': ', $e->getMessage(), "\n";
}