A. api / Bd.php

1
<?php
2
3
require_once __DIR__ . "/../libservidorphp/rolBusca.php";
4
require_once __DIR__ . "/../libservidorphp/rolAgrega.php";
5
6
class Bd
7
{
8
9
 private static ?PDO $pdo = null;
10
11
 static function conexion(): PDO
12
 {
13
  if (self::$pdo === null) {
14
15
   self::$pdo = new PDO(
16
    // cadena de conexión
17
    "sqlite:" . __DIR__ . "/srvamuchos.db",
18
    // usuario
19
    null,
20
    // contraseña
21
    null,
22
    // Opciones: pdos no persistentes y lanza excepciones.
23
    [PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
24
   );
25
26
   self::$pdo->exec(
27
    'CREATE TABLE IF NOT EXISTS USUARIO (
28
      USU_ID INTEGER,
29
      USU_SAN TEXT NOT NULL,
30
      CONSTRAINT PK_USU PRIMARY KEY(USU_ID),
31
      CONSTRAINT UQ_USU_SAN UNIQUE(USU_SAN),
32
      CONSTRAINT CHK_USU_SAN CHECK(LENGTH(USU_SAN) > 0)
33
     )'
34
   );
35
   self::$pdo->exec(
36
    'CREATE TABLE IF NOT EXISTS ROL (
37
      ROL_ID TEXT NOT NULL,
38
      ROL_DESCRIPCION TEXT NOT NULL,
39
      CONSTRAINT PK_ROL PRIMARY KEY(ROL_ID),
40
      CONSTRAINT CHK_ROL_ID CHECK(LENGTH(ROL_ID) > 0),
41
      CONSTRAINT UQ_ROL_DESCR UNIQUE(ROL_DESCRIPCION),
42
      CONSTRAINT CHK_ROL_DESCR CHECK(LENGTH(ROL_DESCRIPCION) > 0)
43
     )'
44
   );
45
   self::$pdo->exec(
46
    'CREATE TABLE IF NOT EXISTS USU_ROL (
47
      UR_USU_ID INTEGER NOT NULL,
48
      UR_ROL_ID TEXT NOT NULL,
49
      CONSTRAINT PK_USU_ROL PRIMARY KEY(UR_USU_ID, UR_ROL_ID),
50
      CONSTRAINT FK_UR_USU FOREIGN KEY (UR_USU_ID) REFERENCES USUARIO(USU_ID),
51
      CONSTRAINT FK_UR_ROL FOREIGN KEY (UR_ROL_ID) REFERENCES ROL(ROL_ID)
52
     )'
53
   );
54
55
   self::$pdo->beginTransaction();
56
57
   $rolAdministrador = rolBusca(self::$pdo, "Administrador");
58
   $rolAdministrador = rolBusca(self::$pdo, "Cliente");
59
60
   if ($rolAdministrador === false) {
61
    rolAgrega(
62
     bd: self::$pdo,
63
     id: "Administrador",
64
     descripcion: "Administra el sistema."
65
    );
66
   }
67
68
   if (rolBusca(self::$pdo, "Cliente") === false) {
69
    rolAgrega(
70
     bd: self::$pdo,
71
     id: "Cliente",
72
     descripcion: "Realiza compras."
73
    );
74
   }
75
76
   self::$pdo->commit();
77
  }
78
79
  return self::$pdo;
80
 }
81
}
82
skip_previous skip_next