A. api / Bd.php

1
<?php
2
3
require_once __DIR__ . "/ventaEnCapturaAgrega.php";
4
5
class Bd
6
{
7
8
 private static ?PDO $pdo = null;
9
10
 public static function conexion(): PDO
11
 {
12
  if (self::$pdo === null) {
13
   self::$pdo = new PDO(
14
    // cadena de conexión
15
    "sqlite:" . __DIR__ . "/srvcompras.db",
16
    // usuario
17
    null,
18
    // contraseña
19
    null,
20
    // Opciones: pdos no persistentes y lanza excepciones.
21
    [PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
22
   );
23
24
   self::$pdo->exec(
25
    'CREATE TABLE IF NOT EXISTS VENTA (
26
      VNT_ID INTEGER,
27
      VNT_EN_CAPTURA INTEGER NOT NULL,
28
      CONSTRAINT PK_VNT PRIMARY KEY(VNT_ID)
29
     )'
30
   );
31
   self::$pdo->exec(
32
    'CREATE TABLE IF NOT EXISTS PRODUCTO (
33
      PRD_ID INTEGER,
34
      PRD_NOMBRE TEXT NOT NULL,
35
      PRD_EXISTENCIAS REAL NOT NULL,
36
      PRD_PRECIO REAL NOT NULL,
37
      CONSTRAINT PK_PRD PRIMARY KEY(PRD_ID),
38
      CONSTRAINT UQ_PRD_NOM UNIQUE(PRD_NOMBRE),
39
      CONSTRAINT CHK_PRD_NOM CHECK(LENGTH(PRD_NOMBRE) > 0)
40
     )'
41
   );
42
   self::$pdo->exec(
43
    'CREATE TABLE IF NOT EXISTS DET_VENTA (
44
      DTV_VNT_ID INTEGER NOT NULL,
45
      DTV_PRD_ID INTEGER NOT NULL,
46
      DTV_CANTIDAD REAL NOT NULL,
47
      DTV_PRECIO REAL NOT NULL,
48
      CONSTRAINT PK_DTV PRIMARY KEY (DTV_VNT_ID, DTV_PRD_ID),
49
      CONSTRAINT FK_DTV_VNT FOREIGN KEY (DTV_VNT_ID) REFERENCES VENTA(VNT_ID),
50
      CONSTRAINT FK_DTV_PRD FOREIGN KEY (DTV_PRD_ID) REFERENCES PRODUCTO(PRD_ID)
51
      )'
52
   );
53
54
   $cantidadDeProductos =
55
    self::$pdo->query("SELECT COUNT(PRD_ID) FROM PRODUCTO")->fetchColumn(0);
56
57
   if ($cantidadDeProductos === 0) {
58
    self::$pdo->exec(
59
     "INSERT INTO PRODUCTO
60
       (PRD_NOMBRE, PRD_EXISTENCIAS, PRD_PRECIO)
61
      VALUES
62
       ('Sandwich', 50, 15),
63
       ('Hot dog', 40, 30),
64
       ('Hamburguesa', 30, 40)"
65
    );
66
   }
67
68
   $cantidadDeVentas =
69
    self::$pdo->query("SELECT COUNT(VNT_ID) FROM VENTA")->fetchColumn(0);
70
71
   if ($cantidadDeVentas === 0) {
72
    ventaEnCapturaAgrega(self::$pdo);
73
   }
74
  }
75
76
  return self::$pdo;
77
 }
78
}
79
skip_previous skip_next