init database constructor

This commit is contained in:
yggverse 2024-04-14 15:07:49 +03:00
parent 7ac9260ba7
commit 2053ab01de
5 changed files with 71 additions and 5 deletions

2
.gitignore vendored
View File

@ -1,3 +1,3 @@
/vendor/
/composer.lock
/db.sqlite
/database.sqlite

View File

@ -7,10 +7,11 @@ At this moment project under development!
* [x] Custom DNS resolver with memory cache, oriented to alt networks like [Yggdrasil](https://github.com/yggdrasil-network/yggdrasil-go)
* [x] Flexible settings in `config.json`, then UI
* [x] Native GTK environment, no custom colors until you change it in `css`
* [x] Page tabs
* [ ] Local pages history snaps to make it accessible even offline
* [x] Multi-tabs
* [ ] Navigation history
* [ ] Bookmarks
* [ ] Certificate features
* [ ] Local snaps to make resources accessible even offline
* [ ] `Gemfeed` reader
* [ ] Search engine integrations, probably [Yo!](https://github.com/YGGverse/Yo/tree/gemini) Search by default
* [ ] Machine translations (e.g. [Lingva](https://github.com/thedaviddelta/lingva-translate) API)

View File

@ -2,6 +2,12 @@
"app":
{
"theme":"Default",
"database":
{
"name":"database.sqlite",
"username":null,
"password":null
},
"header":
{
"enabled":true,
@ -123,6 +129,10 @@
}
}
}
},
"history":
{
"enabled":true
}
}
}

View File

@ -6,6 +6,8 @@ namespace Yggverse\Yoda\Entity;
class App
{
public \Yggverse\Yoda\Model\Database $database;
public \GtkWindow $window;
public \GtkHeaderBar $header;
public \GtkNotebook $tabs;
@ -17,6 +19,13 @@ class App
// Init config
$this->config = \Yggverse\Yoda\Model\File::getConfig()->app; // @TODO
// Init database
$this->database = new \Yggverse\Yoda\Model\Database(
$this->config->database->name,
$this->config->database->username,
$this->config->database->password
);
// Init theme
$css = new \GtkCssProvider();

View File

@ -6,6 +6,52 @@ namespace Yggverse\Yoda\Model;
class Database
{
public function __construct()
{}
public \PDO $database;
public function __construct(
string $database,
?string $username = null,
?string $password = null
) {
try
{
$this->database = new \PDO(
sprintf(
'sqlite:%s',
$database
),
$username,
$password
);
$this->database->setAttribute(
\PDO::ATTR_ERRMODE,
\PDO::ERRMODE_EXCEPTION
);
$this->database->setAttribute(
\PDO::ATTR_DEFAULT_FETCH_MODE,
\PDO::FETCH_OBJ
);
$this->database->query('
CREATE TABLE IF NOT EXISTS "history"
(
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"time" INTEGER NOT NULL,
"address" VARCHAR(1024) NOT NULL
)
');
}
catch (\PDOException $exception)
{
exit(
print_r(
$exception->getMessage(),
true
)
);
}
}
}