forked from kamba4/sunders
		
	
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
// Admin credentials (must have privileges to create DB/users)
 | 
						|
$dbHost     = getenv('MYSQL_HOST');
 | 
						|
$dbAdmin    = getenv('MYSQL_USER');
 | 
						|
$dbPassword = getenv('MYSQL_PASSWORD');
 | 
						|
$dbName = getenv('MYSQL_DB');
 | 
						|
 | 
						|
// Variables for new users
 | 
						|
$cameraUser        = getenv('CAMERA_USER');
 | 
						|
$cameraPassword    = getenv('CAMERA_USER_PASSWORD');
 | 
						|
 | 
						|
$camSelectUser     = getenv('CAMERA_SELECT_USER');
 | 
						|
$camSelectPassword = getenv('CAMERA_SELECT_USER_PASSWORD');
 | 
						|
 | 
						|
// Connect to MySQL
 | 
						|
$conn = new mysqli($dbHost, $dbAdmin, $dbPassword);
 | 
						|
 | 
						|
// Check connection
 | 
						|
if ($conn->connect_error) {
 | 
						|
    die("Connection failed: " . $conn->connect_error);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
if (!$conn->query("CREATE DATABASE IF NOT EXISTS $dbName")) {
 | 
						|
    echo "Error creating database: " . $conn->error . "\n";
 | 
						|
}
 | 
						|
if (!$conn->select_db($dbName)) {
 | 
						|
    die("Error selecting database: " . $conn->error);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// Create camera user
 | 
						|
$conn->query("CREATE USER IF NOT EXISTS '$cameraUser'@'%' IDENTIFIED BY '$cameraPassword'");
 | 
						|
$conn->query("GRANT ALL PRIVILEGES ON $dbName.* TO '$cameraUser'@'%'");
 | 
						|
 | 
						|
// Create camselect user
 | 
						|
$conn->query("CREATE USER IF NOT EXISTS '$camSelectUser'@'%' IDENTIFIED BY '$camSelectPassword'");
 | 
						|
$conn->query("GRANT SELECT ON $dbName.* TO '$camSelectUser'@'%'");
 | 
						|
 | 
						|
 | 
						|
// position table
 | 
						|
$conn->query("
 | 
						|
CREATE TABLE IF NOT EXISTS position (
 | 
						|
  id BIGINT PRIMARY KEY,
 | 
						|
  latitude INT,
 | 
						|
  longitude INT
 | 
						|
)
 | 
						|
");
 | 
						|
 | 
						|
// tag table
 | 
						|
$conn->query("
 | 
						|
CREATE TABLE IF NOT EXISTS tag (
 | 
						|
  id BIGINT,
 | 
						|
  k VARCHAR(100),
 | 
						|
  v VARCHAR(10000),
 | 
						|
  PRIMARY KEY (id, k),
 | 
						|
  CONSTRAINT fk_position FOREIGN KEY (id) REFERENCES `position`(id) ON DELETE CASCADE
 | 
						|
)
 | 
						|
");
 | 
						|
 | 
						|
$conn->query("CREATE INDEX IF NOT EXISTS LatLon ON position (latitude, longitude)");
 | 
						|
 | 
						|
 | 
						|
// sync_state table
 | 
						|
$conn->query("
 | 
						|
CREATE TABLE IF NOT EXISTS sync_state (
 | 
						|
  k VARCHAR(100),
 | 
						|
  v VARCHAR(100)
 | 
						|
  )
 | 
						|
");
 | 
						|
$conn->query("INSERT INTO sync_state (k, v) VALUES ('sequenceNumber', '0');");
 | 
						|
 | 
						|
echo "Database, users, and tables created successfully.\n";
 | 
						|
 | 
						|
$conn->close();
 | 
						|
?>
 |