Changes for beta8 #4
|
@ -17,8 +17,10 @@
|
||||||
"rss": "https://git.bitbadger.solutions/bit-badger/pdo-document.rss",
|
"rss": "https://git.bitbadger.solutions/bit-badger/pdo-document.rss",
|
||||||
"docs": "https://bitbadger.solutions/open-source/pdo-document/"
|
"docs": "https://bitbadger.solutions/open-source/pdo-document/"
|
||||||
},
|
},
|
||||||
|
"minimum-stability": "beta",
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.2",
|
"php": ">=8.2",
|
||||||
|
"bit-badger/inspired-by-fsharp": "^1",
|
||||||
"netresearch/jsonmapper": "^4",
|
"netresearch/jsonmapper": "^4",
|
||||||
"ext-pdo": "*",
|
"ext-pdo": "*",
|
||||||
"phpoption/phpoption": "^1.9"
|
"phpoption/phpoption": "^1.9"
|
||||||
|
|
49
composer.lock
generated
49
composer.lock
generated
|
@ -4,8 +4,53 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "dc897c0ab21d662a65b3818331edd2f2",
|
"content-hash": "223a16e330809798fc103d89c35faaa7",
|
||||||
"packages": [
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "bit-badger/inspired-by-fsharp",
|
||||||
|
"version": "v1.0.0-beta1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.bitbadger.solutions/bit-badger/inspired-by-fsharp",
|
||||||
|
"reference": "efb3a4461edcb23e0dd82068adeb0591240870b0"
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^8.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpoption/phpoption": "^1",
|
||||||
|
"phpunit/phpunit": "^11"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"BitBadger\\InspiredByFSharp\\": "./src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Daniel J. Summers",
|
||||||
|
"email": "daniel@bitbadger.solutions",
|
||||||
|
"homepage": "https://bitbadger.solutions",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP utility classes whose functionality is inspired by their F# counterparts",
|
||||||
|
"keywords": [
|
||||||
|
"option",
|
||||||
|
"result"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"email": "daniel@bitbadger.solutions",
|
||||||
|
"rss": "https://git.bitbadger.solutions/bit-badger/inspired-by-fsharp.rss",
|
||||||
|
"source": "https://git.bitbadger.solutions/bit-badger/inspired-by-fsharp"
|
||||||
|
},
|
||||||
|
"time": "2024-07-28T21:35:11+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "netresearch/jsonmapper",
|
"name": "netresearch/jsonmapper",
|
||||||
"version": "v4.4.1",
|
"version": "v4.4.1",
|
||||||
|
@ -1816,7 +1861,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "beta",
|
||||||
"stability-flags": [],
|
"stability-flags": [],
|
||||||
"prefer-stable": false,
|
"prefer-stable": false,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
|
|
|
@ -8,9 +8,9 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace BitBadger\PDODocument;
|
namespace BitBadger\PDODocument;
|
||||||
|
|
||||||
|
use BitBadger\InspiredByFSharp\Option;
|
||||||
use Exception;
|
use Exception;
|
||||||
use PDO;
|
use PDO;
|
||||||
use PhpOption\{None, Option, Some};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common configuration for the document library
|
* Common configuration for the document library
|
||||||
|
@ -55,10 +55,10 @@ class Configuration
|
||||||
public static function useDSN(string $dsn): void
|
public static function useDSN(string $dsn): void
|
||||||
{
|
{
|
||||||
if (empty($dsn)) {
|
if (empty($dsn)) {
|
||||||
self::$mode = self::$pdoDSN = None::create();
|
self::$mode = self::$pdoDSN = Option::None();
|
||||||
} else {
|
} else {
|
||||||
self::$mode = Some::create(Mode::deriveFromDSN($dsn));
|
self::$mode = Option::Some(Mode::deriveFromDSN($dsn));
|
||||||
self::$pdoDSN = Some::create($dsn);
|
self::$pdoDSN = Option::Some($dsn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,14 +66,15 @@ class Configuration
|
||||||
* Retrieve a new connection to the database
|
* Retrieve a new connection to the database
|
||||||
*
|
*
|
||||||
* @return PDO A new connection to the SQLite database with foreign key support enabled
|
* @return PDO A new connection to the SQLite database with foreign key support enabled
|
||||||
* @throws Exception If this is called before a connection string is set
|
* @throws DocumentException If this is called before a connection string is set
|
||||||
*/
|
*/
|
||||||
public static function dbConn(): PDO
|
public static function dbConn(): PDO
|
||||||
{
|
{
|
||||||
if (is_null(self::$pdo)) {
|
if (is_null(self::$pdo)) {
|
||||||
$dsn = (self::$pdoDSN ?? None::create())->getOrThrow(
|
if (self::$pdoDSN->isNone()) {
|
||||||
new DocumentException('Please provide a data source name (DSN) before attempting data access'));
|
throw new DocumentException('Please provide a data source name (DSN) before attempting data access');
|
||||||
self::$pdo = new PDO($dsn, $_ENV['PDO_DOC_USERNAME'] ?? self::$username,
|
}
|
||||||
|
self::$pdo = new PDO(self::$pdoDSN->get(), $_ENV['PDO_DOC_USERNAME'] ?? self::$username,
|
||||||
$_ENV['PDO_DOC_PASSWORD'] ?? self::$password, self::$options);
|
$_ENV['PDO_DOC_PASSWORD'] ?? self::$password, self::$options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,8 +89,10 @@ class Configuration
|
||||||
*/
|
*/
|
||||||
public static function mode(?string $process = null): Mode
|
public static function mode(?string $process = null): Mode
|
||||||
{
|
{
|
||||||
return self::$mode->getOrThrow(
|
if (self::$mode->isNone()) {
|
||||||
new DocumentException('Database mode not set' . (is_null($process) ? '' : "; cannot $process")));
|
throw new DocumentException('Database mode not set' . (is_null($process) ? '' : "; cannot $process"));
|
||||||
|
}
|
||||||
|
return self::$mode->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -99,7 +102,7 @@ class Configuration
|
||||||
*/
|
*/
|
||||||
public static function overrideMode(?Mode $mode): void
|
public static function overrideMode(?Mode $mode): void
|
||||||
{
|
{
|
||||||
self::$mode = Option::fromValue($mode);
|
self::$mode = Option::of($mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -8,11 +8,11 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace BitBadger\PDODocument;
|
namespace BitBadger\PDODocument;
|
||||||
|
|
||||||
|
use BitBadger\InspiredByFSharp\Option;
|
||||||
use BitBadger\PDODocument\Mapper\Mapper;
|
use BitBadger\PDODocument\Mapper\Mapper;
|
||||||
use PDO;
|
use PDO;
|
||||||
use PDOException;
|
use PDOException;
|
||||||
use PDOStatement;
|
use PDOStatement;
|
||||||
use PhpOption\{None, Option, Some};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functions to execute custom queries
|
* Functions to execute custom queries
|
||||||
|
@ -106,7 +106,7 @@ class Custom
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$stmt = &self::runQuery("$query LIMIT 1", $parameters);
|
$stmt = &self::runQuery("$query LIMIT 1", $parameters);
|
||||||
return ($first = $stmt->fetch(PDO::FETCH_ASSOC)) ? Some::create($mapper->map($first)) : None::create();
|
return ($first = $stmt->fetch(PDO::FETCH_ASSOC)) ? Option::Some($mapper->map($first)) : Option::None();
|
||||||
} finally {
|
} finally {
|
||||||
$stmt = null;
|
$stmt = null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user