K. Carpeta « api »

Versión para imprimir.

A. api / Bd.php

1
<?php
2
3
class Bd
4
{
5
 private static ?PDO $pdo = null;
6
7
 static function conexion(): PDO
8
 {
9
  if (self::$pdo === null) {
10
11
   self::$pdo = new PDO(
12
    // cadena de conexión
13
    "sqlite:" . __DIR__ . "/srvbd.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 INTEGER,
25
      PAS_NOMBRE TEXT NOT NULL,
26
      CONSTRAINT PK_PAS PRIMARY KEY(PAS_ID),
27
      CONSTRAINT UQ_PAS_NOM UNIQUE(PAS_NOMBRE),
28
      CONSTRAINT CHK_PAS_NOM CHECK(LENGTH(PAS_NOMBRE) > 0)
29
     )"
30
   );
31
  }
32
33
  return self::$pdo;
34
 }
35
}
36

B. api / pasatiempo-agrega.php

1
<?php
2
3
require_once __DIR__ . "/../libservidorphp/manejaErrores.php";
4
require_once __DIR__ . "/../libservidorphp/recibeTextoObligatorio.php";
5
require_once __DIR__ . "/../libservidorphp/devuelveCreated.php";
6
require_once __DIR__ . "/Bd.php";
7
8
$nombre = recibeTextoObligatorio("nombre");
9
10
$bd = Bd::conexion();
11
$stmt = $bd->prepare(
12
 "INSERT INTO PASATIEMPO (
13
    PAS_NOMBRE
14
   ) values (
15
    TRIM(:PAS_NOMBRE)
16
   )"
17
);
18
$stmt->execute([
19
 ":PAS_NOMBRE" => $nombre
20
]);
21
$id = $bd->lastInsertId();
22
23
$query = http_build_query(["id" => $id]);
24
devuelveCreated(
25
 "/api/pasatiempo-vista-modifica.php?$query",
26
 [
27
  "id" => ["value" => $id],
28
  "nombre" => ["value" => $nombre],
29
 ]
30
);
31

C. api / pasatiempo-elimina.php

1
<?php
2
3
require_once __DIR__ . "/../libservidorphp/manejaErrores.php";
4
require_once __DIR__ . "/../libservidorphp/recibeEnteroObligatorio.php";
5
require_once __DIR__ . "/../libservidorphp/devuelveNoContent.php";
6
require_once __DIR__ . "/Bd.php";
7
8
$id = recibeEnteroObligatorio("id");
9
10
$bd = Bd::conexion();
11
$stmt = $bd->prepare("DELETE FROM PASATIEMPO WHERE PAS_ID = :PAS_ID");
12
$stmt->execute([":PAS_ID" => $id]);
13
14
devuelveNoContent();
15

D. api / pasatiempo-modifica.php

1
<?php
2
3
require_once __DIR__ . "/../libservidorphp/manejaErrores.php";
4
require_once __DIR__ . "/../libservidorphp/recibeEnteroObligatorio.php";
5
require_once __DIR__ . "/../libservidorphp/recibeTextoObligatorio.php";
6
require_once __DIR__ . "/../libservidorphp/devuelveJson.php";
7
require_once __DIR__ . "/Bd.php";
8
9
$id = recibeEnteroObligatorio("id");
10
$nombre = recibeTextoObligatorio("nombre");
11
12
$bd = Bd::conexion();
13
$stmt = $bd->prepare(
14
 "UPDATE PASATIEMPO
15
   SET
16
    PAS_NOMBRE = TRIM(:PAS_NOMBRE)
17
   WHERE
18
    PAS_ID = :PAS_ID"
19
);
20
$stmt->execute([
21
 ":PAS_NOMBRE" => $nombre,
22
 ":PAS_ID" => $id,
23
]);
24
25
devuelveJson([
26
 "id" => ["value" => $id],
27
 "nombre" => ["value" => $nombre],
28
]);
29

E. api / pasatiempo-vista-index.php

1
<?php
2
3
require_once __DIR__ . "/../libservidorphp/manejaErrores.php";
4
require_once __DIR__ . "/../libservidorphp/devuelveJson.php";
5
require_once __DIR__ . "/Bd.php";
6
7
$bd = Bd::conexion();
8
$stmt = $bd->query(
9
 "SELECT PAS_ID, PAS_NOMBRE FROM PASATIEMPO ORDER BY PAS_NOMBRE"
10
);
11
$lista = $stmt->fetchAll(PDO::FETCH_ASSOC);
12
13
$render = "";
14
foreach ($lista as $modelo) {
15
 $id = $modelo["PAS_ID"];
16
 $query = htmlentities(http_build_query(["id" => $id]));
17
 $urlModifica = "modifica.html?$query";
18
 $nombre = htmlentities($modelo["PAS_NOMBRE"]);
19
 $render .=
20
  "<li>
21
    <p>
22
     <a href='$urlModifica'>$nombre</a>
23
    </p>
24
   </li>";
25
}
26
27
devuelveJson(["lista" => ["innerHTML" => $render]]);
28

F. api / pasatiempo-vista-modifica.php

1
<?php
2
3
require_once __DIR__ . "/../libservidorphp/manejaErrores.php";
4
require_once __DIR__ . "/../libservidorphp/recibeEnteroObligatorio.php";
5
require_once __DIR__ . "/../libservidorphp/validaEntidadObligatoria.php";
6
require_once __DIR__ . "/../libservidorphp/devuelveJson.php";
7
require_once __DIR__ . "/Bd.php";
8
9
$id = recibeEnteroObligatorio("id");
10
11
$bd = Bd::conexion();
12
$stmt = $bd->prepare("SELECT * FROM PASATIEMPO WHERE PAS_ID = :PAS_ID");
13
$stmt->execute([":PAS_ID" => $id]);
14
$modelo = $stmt->fetch(PDO::FETCH_ASSOC);
15
16
$modelo = validaEntidadObligatoria("Pasatiempo",  $modelo);
17
18
devuelveJson([
19
 "id" => ["value" => $id],
20
 "nombre" => ["value" => $modelo["PAS_NOMBRE"]],
21
]);
22