42 lines
1.6 KiB
PHP
42 lines
1.6 KiB
PHP
<?php
|
|
function getDbConnection() {
|
|
static $db = null;
|
|
if ($db === null) {
|
|
$host = getenv('DB_HOST') ?: 'mysql';
|
|
$dbname = getenv('DB_NAME') ?: 'neptune';
|
|
$user = getenv('DB_USER') ?: 'neptune';
|
|
$pass = getenv('DB_PASS') ?: 'neptune_pass';
|
|
$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pass, [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
|
|
]);
|
|
migrate($db);
|
|
}
|
|
return $db;
|
|
}
|
|
|
|
function migrate($db) {
|
|
$db->exec("CREATE TABLE IF NOT EXISTS network_shapes (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
label VARCHAR(255) NOT NULL DEFAULT '',
|
|
shape_type ENUM('rectangle','ellipse','zone') DEFAULT 'rectangle',
|
|
pos_x FLOAT DEFAULT 0,
|
|
pos_y FLOAT DEFAULT 0,
|
|
width FLOAT DEFAULT 200,
|
|
height FLOAT DEFAULT 150,
|
|
color VARCHAR(7) DEFAULT '#1e3a5f',
|
|
border_color VARCHAR(7) DEFAULT '#3b82f6',
|
|
opacity FLOAT DEFAULT 0.15,
|
|
z_index INT DEFAULT 0,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
)");
|
|
$db->exec("CREATE TABLE IF NOT EXISTS neptune_users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_token VARCHAR(255) NOT NULL UNIQUE,
|
|
username VARCHAR(255) NOT NULL,
|
|
email VARCHAR(255) DEFAULT '',
|
|
role ENUM('admin','user') DEFAULT 'user',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
)");
|
|
$db->exec("CREATE TABLE IF NOT EXISTS node_notes (id INT AUTO_INCREMENT PRIMARY KEY, node_id INT NOT NULL UNIQUE, notes TEXT DEFAULT '')");
|
|
} |