dsn = $dsn; } private function connect() { if (empty($this->pdo)) { $this->pdo = new \PDO($this->dsn); $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $this->ensureSchema(); } } const CURRENT_SCHEMA = 1; private function ensureSchema() { $ret = $this->pdo->query("PRAGMA user_version"); $schema_version = $ret->fetchColumn(0); $ret->closeCursor(); if ($schema_version == self::CURRENT_SCHEMA) return; if ($schema_version == 0) { $this->pdo->exec("CREATE TABLE files (id INTEGER PRIMARY KEY, path VARCHAR(100) NOT NULL, name VARCHAR(30) NOT NULL, size INTEGER NOT NULL, timestamp INTEGER NOT NULL)"); $this->pdo->exec("CREATE UNIQUE INDEX files_unique ON files (path ASC, name ASC)"); $schema_version += 1; } $this->pdo->exec("PRAGMA user_version = ".self::CURRENT_SCHEMA); } public function getFiles() { $this->connect(); $ret = $this->pdo->query("SELECT * FROM files ORDER BY path, name"); $ret->setFetchMode(\PDO::FETCH_ASSOC); return $ret; } } // vim: ts=4 et