forked from adlnet/moodle-logstore_xapi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRepository.php
More file actions
70 lines (64 loc) · 2.43 KB
/
Repository.php
File metadata and controls
70 lines (64 loc) · 2.43 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
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace src\transformer\repos;
use \stdClass as PhpObj;
/**
* Generic respository.
*
* @package logstore_xapi
* @copyright Jerret Fowler <jerrett.fowler@gmail.com>
* Ryan Smith <https://www.linkedin.com/in/ryan-smith-uk/>
* David Pesce <david.pesce@exputo.com>
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
abstract class Repository extends PhpObj {
/**
* Reads an array of objects from the store with the given type and query.
*
* @param string $type The name of the table to retrieve from.
* @param array $query Any additional conditions to add to the query.
* @param string $sort Sort string for how to order the data.
* @return array
*/
abstract public function read_records(string $type, array $query, string $sort = '');
/**
* Reads an object from the store with the given type and query.
*
* @param string $type The name of the table to retrieve from.
* @param array $query Any additional conditions to add to the query.
* @throws \Exception if the record was not found
* @return PhpObj
*/
public function read_record(string $type, array $query) {
$records = $this->read_records($type, $query);
$record = $records[0] ?? null;
if (!$record) {
throw new \Exception("$type not found.");
}
return $record;
}
/**
* Reads an object from the store with the given type and id.
*
* @param string $type The name of the table to retrieve from.
* @param string $id The id of the record to retrieve.
* @return PhpObj
* @throws \Exception
*/
public function read_record_by_id($type, $id) {
return $this->read_record($type, ['id' => $id]);
}
}