Browse Source

init database constructor

PHP-GTK3
yggverse 7 months ago
parent
commit
2053ab01de
  1. 2
      .gitignore
  2. 5
      README.md
  3. 10
      config.json
  4. 9
      src/Entity/App.php
  5. 50
      src/Model/Database.php

2
.gitignore vendored

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

5
README.md

@ -7,10 +7,11 @@ At this moment project under development! @@ -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)

10
config.json

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

9
src/Entity/App.php

@ -6,6 +6,8 @@ namespace Yggverse\Yoda\Entity; @@ -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 @@ -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();

50
src/Model/Database.php

@ -6,6 +6,52 @@ namespace Yggverse\Yoda\Model; @@ -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
)
);
}
}
}
Loading…
Cancel
Save