C. 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__ . "/srvarchivos.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 ARCHIVO (
24
      ARCH_ID INTEGER,
25
      ARCH_BYTES BLOB NOT NULL,
26
      CONSTRAINT PK_ARCH PRIMARY KEY(ARCH_ID)
27
     )'
28
   );
29
   self::$pdo->exec(
30
    'CREATE TABLE IF NOT EXISTS PRODUCTO (
31
      PRD_ID INTEGER,
32
      PRD_NOMBRE TEXT NOT NULL,
33
      PRD_ARCH_ID INTEGER NOT NULL,
34
      CONSTRAINT PK_PRD PRIMARY KEY(PRD_ID),
35
      CONSTRAINT UQ_PRD_NOM UNIQUE(PRD_NOMBRE),
36
      CONSTRAINT CHK_PRD_NOM CHECK(LENGTH(PRD_NOMBRE) > 0),
37
      CONSTRAINT FK_PRD_ARCH
38
       FOREIGN KEY (PRD_ARCH_ID) REFERENCES ARCHIVO(ARCH_ID)
39
      )'
40
   );
41
  }
42
43
  return self::$pdo;
44
 }
45
}
46
skip_previous skip_next