Compare commits

..

3 commits

Author SHA1 Message Date
ffd809f76d refactor: database class singleton to use existing connection (#32)
This is a half-way fix for #31 so it does not close it. But it does solve the issue of `Too many connections` if the `Database` class when the `Database` class is instanced a lot. The issue of credentials still remain.

Reviewed-on: https://codeberg.org/vlw/scaffold/pulls/32
2026-02-24 10:44:05 +01:00
71a9f12b02 fix: use func_num_args() to determine if $return should be used for Database\Model (#30)
It was not possible to set the return type explicitly as `null`, since that was the value we checked for if we should return the value of `$return` or not. We're not checking the total amount of arguments provided to check if a `$return` value was passed or not.

Reviewed-on: https://codeberg.org/vlw/scaffold/pulls/30
2026-02-22 14:41:41 +01:00
2d55d954a1 refactor: expose the Database property on Model as readonly public (#29)
Reviewed-on: https://codeberg.org/vlw/scaffold/pulls/29
2026-02-22 14:41:22 +01:00
2 changed files with 20 additions and 5 deletions

View file

@ -19,6 +19,8 @@
private const DEFAULT_USERNAME = "www-data";
private const DEFAULT_PASSWORD = "";
private static ?Database $instance = null;
/**
* Create a new Database instance from credentials
*
@ -44,6 +46,16 @@
$_ENV["mariadb"]["user"] = $username;
$_ENV["mariadb"]["pass"] = $password;
$_ENV["mariadb"]["db"] = $database;
self::$instance = null;
}
public static function instance(): static {
if (self::$instance) {
return self::$instance;
}
return new static();
}
/**
@ -56,6 +68,8 @@
$_ENV["mariadb"]["pass"],
$_ENV["mariadb"]["db"],
);
self::$instance = $this;
}
/**

View file

@ -15,7 +15,8 @@
abstract public int|string $id { get; }
protected readonly Database $db;
public readonly Database $db;
private bool $_resolved = false;
private bool $_isset;
private ?array $_row;
@ -26,7 +27,7 @@
* @param string $table The target database table
*/
protected static function create(string $table, array $values): bool {
return new Database()->from($table)->insert($values);
return Database::instance()->from($table)->insert($values);
}
/**
@ -41,7 +42,7 @@
public readonly array $columns,
public readonly array $where
) {
$this->db = new Database();
$this->db = Database::instance();
}
/**
@ -74,7 +75,7 @@
* @return bool Entity exists
*/
public function isset(): bool {
return $this->_isset ??= new Database()
return $this->_isset ??= Database::instance()
->from($this->table)
->where($this->where)
->limit(1)
@ -108,6 +109,6 @@
->where($this->where)
->update([$key => $value]);
return $return ?? $value;
return func_num_args() === 2 ? $value : $return;
}
}