1 | <?php |
2 | |
3 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
4 | |
5 | class Bd |
6 | { |
7 | |
8 | private static ?PDO $conexion = null; |
9 | |
10 | static function getConexion(): PDO |
11 | { |
12 | if (self::$conexion === null) { |
13 | self::$conexion = new PDO( |
14 | // cadena de conexión |
15 | "sqlite:sincronizacion.db", |
16 | // usuario |
17 | null, |
18 | // contraseña |
19 | null, |
20 | // Opciones: conexiones persistentes y lanza excepciones. |
21 | [PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] |
22 | ); |
23 | |
24 | self::$conexion->exec( |
25 | 'CREATE TABLE IF NOT EXISTS PASATIEMPO ( |
26 | PAS_UUID TEXT NOT NULL, |
27 | PAS_NOMBRE TEXT NOT NULL, |
28 | PAS_MODIFICACION INTEGER NOT NULL, |
29 | PAS_ELIMINADO INTEGER NOT NULL, |
30 | CONSTRAINT PAS_PK |
31 | PRIMARY KEY(PAS_UUID), |
32 | CONSTRAINT PAS_UUID_NV |
33 | CHECK(LENGTH(PAS_UUID) > 0), |
34 | CONSTRAINT PAS_NOM_NV |
35 | CHECK(LENGTH(PAS_NOMBRE) > 0) |
36 | )' |
37 | ); |
38 | } |
39 | |
40 | return self::$conexion; |
41 | } |
42 | } |
43 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/Bd.php"; |
4 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
5 | |
6 | function pasatiempoAgrega(Pasatiempo $modelo) |
7 | { |
8 | |
9 | $modelo->valida(); |
10 | |
11 | $conexion = Bd::getConexion(); |
12 | |
13 | $conexion->prepare( |
14 | "INSERT INTO PASATIEMPO |
15 | (PAS_UUID, PAS_NOMBRE, PAS_MODIFICACION, PAS_ELIMINADO) |
16 | VALUES |
17 | (:uuid, :nombre, :modificacion, :eliminado)" |
18 | ) |
19 | ->execute([ |
20 | ":uuid" => $modelo->uuid, |
21 | ":nombre" => $modelo->nombre, |
22 | ":modificacion" => $modelo->modificacion, |
23 | ":eliminado" => $modelo->eliminado ? 1 : 0 |
24 | ]); |
25 | } |
26 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/../../lib/php/fetch.php"; |
4 | require_once __DIR__ . "/Bd.php"; |
5 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
6 | |
7 | function pasatiempoBusca(string $uuid): false|Pasatiempo |
8 | { |
9 | |
10 | $conexion = Bd::getConexion(); |
11 | |
12 | return fetch( |
13 | $conexion->prepare( |
14 | "SELECT |
15 | PAS_UUID AS uuid, |
16 | PAS_NOMBRE AS nombre, |
17 | PAS_MODIFICACION AS modificacion, |
18 | PAS_ELIMINADO AS eliminado |
19 | FROM PASATIEMPO |
20 | WHERE PAS_UUID = :uuid" |
21 | ), |
22 | [":uuid" => $uuid], |
23 | PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, |
24 | Pasatiempo::class |
25 | ); |
26 | } |
27 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/../../lib/php/fetchAll.php"; |
4 | require_once __DIR__ . "/Bd.php"; |
5 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
6 | |
7 | /** @return Pasatiempo[] */ |
8 | function pasatiempoConsultaNoEliminados() |
9 | { |
10 | $conexion = Bd::getConexion(); |
11 | |
12 | return fetchAll( |
13 | $conexion->query( |
14 | "SELECT |
15 | PAS_UUID AS uuid, |
16 | PAS_NOMBRE AS nombre, |
17 | PAS_MODIFICACION AS modificacion, |
18 | PAS_ELIMINADO AS eliminado |
19 | FROM PASATIEMPO |
20 | WHERE PAS_ELIMINADO = 0 |
21 | ORDER BY PAS_NOMBRE" |
22 | ), |
23 | [], |
24 | PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, |
25 | Pasatiempo::class |
26 | ); |
27 | } |
28 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/Bd.php"; |
4 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
5 | |
6 | function pasatiempoModifica(Pasatiempo $modelo) |
7 | { |
8 | |
9 | $modelo->valida(); |
10 | |
11 | $conexion = Bd::getConexion(); |
12 | |
13 | $conexion->prepare( |
14 | "UPDATE PASATIEMPO |
15 | SET |
16 | PAS_NOMBRE = :nombre, |
17 | PAS_MODIFICACION = :modificacion, |
18 | PAS_ELIMINADO = :eliminado |
19 | WHERE PAS_UUID = :uuid" |
20 | ) |
21 | ->execute([ |
22 | ":uuid" => $modelo->uuid, |
23 | ":nombre" => $modelo->nombre, |
24 | ":modificacion" => $modelo->modificacion, |
25 | ":eliminado" => $modelo->eliminado ? 1 : 0 |
26 | ]); |
27 | } |
28 |