status.php
1.87 KB
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
namespace OCA\Search_Lucene;
/**
* @author Jörn Dreyer <jfd@butonic.de>
*/
class Status {
const STATUS_NEW = 'N';
const STATUS_INDEXED = 'I';
const STATUS_SKIPPED = 'S';
const STATUS_ERROR = 'E';
private $fileId;
private $status;
public function __construct($fileId, $status = null) {
$this->fileId = $fileId;
$this->status = $status;
}
public static function fromFileId($fileId) {
$status = self::get($fileId);
if ($status) {
return new Status($fileId, $status);
} else {
return new Status($fileId, null);
}
}
// always write status to db immediately
public function markNew() {
$this->status = self::STATUS_NEW;
return $this->store();
}
public function markIndexed() {
$this->status = self::STATUS_INDEXED;
return $this->store();
}
public function markSkipped() {
$this->status = self::STATUS_SKIPPED;
return $this->store();
}
public function markError() {
$this->status = self::STATUS_ERROR;
return $this->store();
}
private function store() {
$savedStatus = self::get($this->fileId);
if ($savedStatus) {
return self::update($this->fileId, $this->status);
} else {
return self::insert($this->fileId, $this->status);
}
}
private static function get($fileId) {
$query = \OC_DB::prepare('
SELECT `status`
FROM `*PREFIX*lucene_status`
WHERE `fileid` = ?
');
$result = $query->execute(array($fileId));
$row = $result->fetchRow();
if ($row) {
return $row['status'];
} else {
return null;
}
}
private static function insert($fileId, $status) {
$query = \OC_DB::prepare('
INSERT INTO `*PREFIX*lucene_status` VALUES (?,?)
');
return $query->execute(array($fileId, $status));
}
private static function update($fileId, $status) {
$query = \OC_DB::prepare('
UPDATE `*PREFIX*lucene_status`
SET `status` = ?
WHERE `fileid` = ?
');
return $query->execute(array($status, $fileId));
}
}