B. Carpeta « srv / bd »

Versión para imprimir.

1. srv / bd / Bd.php

1<?php
2
3class Bd
4{
5
6 private static ?PDO $pdo = null;
7
8 static function pdo(): PDO
9 {
10 if (self::$pdo === null) {
11 self::$pdo = new PDO(
12 // cadena de conexión
13 "sqlite:sincronizacion.db",
14 // usuario
15 null,
16 // contraseña
17 null,
18 // Opciones: pdos no persistentes y lanza excepciones.
19 [PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
20 );
21
22 self::$pdo->exec(
23 'CREATE TABLE IF NOT EXISTS PASATIEMPO (
24 PAS_ID TEXT NOT NULL,
25 PAS_NOMBRE TEXT NOT NULL,
26 PAS_MODIFICACION INTEGER NOT NULL,
27 PAS_ELIMINADO INTEGER NOT NULL,
28 CONSTRAINT PAS_PK
29 PRIMARY KEY(PAS_ID),
30 CONSTRAINT PAS_ID_NV
31 CHECK(LENGTH(PAS_ID) > 0),
32 CONSTRAINT PAS_NOM_NV
33 CHECK(LENGTH(PAS_NOMBRE) > 0)
34 )'
35 );
36 }
37
38 return self::$pdo;
39 }
40}
41

2. srv / bd / pasatiempoAgrega.php

1<?php
2
3require_once __DIR__ . "/../../lib/php/validaNombre.php";
4require_once __DIR__ . "/../../lib/php/insert.php";
5require_once __DIR__ . "/Bd.php";
6require_once __DIR__ . "/../modelo/TABLA_PASATIEMPO.php";
7require_once __DIR__ . "/../modelo/validaId.php";
8
9/**
10 * @param array{
11 * PAS_ID: string,
12 * PAS_NOMBRE: string,
13 * PAS_MODIFICACION: int,
14 * PAS_ELIMINADO: int
15 * } $modelo
16 */
17function pasatiempoAgrega(array $modelo)
18{
19 validaId($modelo[PAS_ID]);
20 validaNombre($modelo[PAS_NOMBRE]);
21 insert(pdo: Bd::pdo(), into: PASATIEMPO, values: $modelo);
22}
23

3. srv / bd / pasatiempoBusca.php

1<?php
2
3require_once __DIR__ . "/../../lib/php/selectFirst.php";
4require_once __DIR__ . "/Bd.php";
5require_once __DIR__ . "/../modelo/TABLA_PASATIEMPO.php";
6
7/**
8 * @return false | array{
9 * PAS_ID: string,
10 * PAS_NOMBRE: string,
11 * PAS_MODIFICACION: int,
12 * PAS_ELIMINADO: int
13 * }
14 */
15function pasatiempoBusca(string $id): false|array
16{
17 return selectFirst(
18 pdo: Bd::pdo(),
19 from: PASATIEMPO,
20 where: [PAS_ID => $id]
21 );
22}
23

4. srv / bd / pasatiempoConsultaNoEliminados.php

1<?php
2
3require_once __DIR__ . "/../../lib/php/select.php";
4require_once __DIR__ . "/Bd.php";
5require_once __DIR__ . "/../modelo/TABLA_PASATIEMPO.php";
6
7/**
8 * @return array{
9 * PAS_ID: string,
10 * PAS_NOMBRE: string,
11 * PAS_MODIFICACION: int,
12 * PAS_ELIMINADO: int
13 * }[]
14 */
15function pasatiempoConsultaNoEliminados()
16{
17 return select(
18 pdo: Bd::pdo(),
19 from: PASATIEMPO,
20 where: [PAS_ELIMINADO => 0],
21 orderBy: PAS_NOMBRE
22 );
23}
24

5. srv / bd / pasatiempoModifica.php

1<?php
2
3require_once __DIR__ . "/../../lib/php/validaNombre.php";
4require_once __DIR__ . "/../../lib/php/update.php";
5require_once __DIR__ . "/Bd.php";
6require_once __DIR__ . "/../modelo/TABLA_PASATIEMPO.php";
7require_once __DIR__ . "/../modelo/validaId.php";
8
9/**
10 * @param array{
11 * PAS_ID: string,
12 * PAS_NOMBRE: string,
13 * PAS_MODIFICACION: int,
14 * PAS_ELIMINADO: int
15 * } $modelo
16 */
17function pasatiempoModifica(array $modelo)
18{
19 validaId($modelo[PAS_ID]);
20 validaNombre($modelo[PAS_NOMBRE]);
21 update(
22 pdo: Bd::pdo(),
23 table: PASATIEMPO,
24 set: $modelo,
25 where: [PAS_ID => $modelo[PAS_ID]]
26 );
27}
28