First Local Commit - After Clean up.
Signed-off-by: Rick Hays <rhays@haysgang.com>
This commit is contained in:
196
app/Controllers/SetupController.php
Normal file
196
app/Controllers/SetupController.php
Normal file
@@ -0,0 +1,196 @@
|
||||
<?php namespace App\Controllers;
|
||||
/******************************************************************************************************************
|
||||
* RPSLS - Rock, Paper, Scissors, Lizard, Spock Game
|
||||
*
|
||||
* @file app/Controllers/SetupController.php
|
||||
* @package App\Controllers
|
||||
* @description
|
||||
* Sets up the DB on first run if it does not exist.
|
||||
* @author Rick Hays
|
||||
* @date 11/15/2019
|
||||
* @license MIT
|
||||
* @copyright Copyright © 2019 - Rick Hays, All Rights Reserved.
|
||||
*
|
||||
* Revisions:
|
||||
* YYYY-MM-DD XX Description
|
||||
******************************************************************************************************************/
|
||||
|
||||
class SetupController extends BaseController
|
||||
{
|
||||
private $forge;
|
||||
private $Error_Flag = FALSE;
|
||||
|
||||
/**
|
||||
* SetupController constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->forge = \Config\Database::forge();
|
||||
}
|
||||
|
||||
/**
|
||||
* @method setup
|
||||
*
|
||||
* @description
|
||||
* Class Page Call for setting up DB.
|
||||
* This will attempt to create DB, tables and indexes for the Game using SQLite.
|
||||
* Note: Make sure permissions are set correct on the app/Database directory so program
|
||||
* can write DB to path.
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
// Create new DB ///////////////////////////////////////////////////////////////////////////////////////////
|
||||
if ($this->forge->createDatabase('game'))
|
||||
echo 'Game Database created. <br>';
|
||||
else
|
||||
{
|
||||
echo 'Error Creating Game DB! <br>';
|
||||
$this->Error_Flag = TRUE;
|
||||
}
|
||||
|
||||
// Build Log Table /////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (is_object($this->BuildLogTable()))
|
||||
echo '(Log) table was created in DB. <br>';
|
||||
else
|
||||
{
|
||||
echo 'Error Creating (Log) Table! <br>';
|
||||
$this->Error_Flag = TRUE;
|
||||
}
|
||||
|
||||
// Build Play Table ////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (is_object($this->BuildPlayTable()))
|
||||
echo '(Play) table was created in DB. <br>';
|
||||
else
|
||||
{
|
||||
echo 'Error Creating (Play) Table! <br>';
|
||||
$this->Error_Flag = TRUE;
|
||||
}
|
||||
|
||||
// Build USER Table ////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (is_object($this->BuildUserTable()))
|
||||
echo '(User) table was created in DB. <br>';
|
||||
else
|
||||
{
|
||||
echo 'Error Creating (User) Table! <br>';
|
||||
$this->Error_Flag = TRUE;
|
||||
}
|
||||
|
||||
if ($this->Error_Flag)
|
||||
{
|
||||
echo 'Errors while trying to create DB';
|
||||
exit;
|
||||
}
|
||||
else
|
||||
echo 'Starting Game Page.';
|
||||
|
||||
return redirect('/', 'refresh');
|
||||
}
|
||||
|
||||
/***************************************************************************************************************
|
||||
* START OF PRIVATE FUNCTIONS
|
||||
**************************************************************************************************************/
|
||||
|
||||
/**
|
||||
* @method BuildLogTable
|
||||
* @description
|
||||
* Pulls in Log Table Fields & Indexes, then attempts to create Log Table
|
||||
* @return mixed
|
||||
*/
|
||||
private function BuildLogTable()
|
||||
{
|
||||
$this->forge->addField($this->LogFields());
|
||||
return $this->forge->createTable('Log', TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @method BuildPlayTable
|
||||
* @description
|
||||
* Pulls in Play Table Fields & Indexes, then attempts to create Play Table
|
||||
* @return mixed
|
||||
*/
|
||||
private function BuildPlayTable()
|
||||
{
|
||||
$this->forge->addField($this->PlayFields());
|
||||
return $this->forge->createTable('plays', TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @method BuildUserTable
|
||||
* @description
|
||||
* Pulls in User Table Fields & Indexes, then attempts to create User Table
|
||||
* @return mixed
|
||||
*/
|
||||
private function BuildUserTable()
|
||||
{
|
||||
$this->forge->addField($this->UserFields());
|
||||
$this->forge->addKey('UserName', FALSE, TRUE);
|
||||
return $this->forge->createTable('users', TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @method LogFields
|
||||
* @description
|
||||
* Fields and Indexes, Structure for the Log Table
|
||||
* @return array
|
||||
*/
|
||||
private function LogFields()
|
||||
{
|
||||
return $fields =
|
||||
[
|
||||
'id' => ['type' => 'int', 'auto_increment' => TRUE, ],
|
||||
'IP' => ['type' => 'text', ],
|
||||
'City' => ['type' => 'text', ],
|
||||
'State' => ['type' => 'text', ],
|
||||
'Country' => ['type' => 'text', ],
|
||||
'DateTime' => ['type' => 'date', 'null' => TRUE, ],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @method PlayFields
|
||||
* @description
|
||||
* Fields and Indexes, Structure for the Play Table
|
||||
* @return array
|
||||
*/
|
||||
private function PlayFields()
|
||||
{
|
||||
return $fields =
|
||||
[
|
||||
'id' => ['type' => 'int', 'auto_increment' => TRUE, ],
|
||||
'UserID' => ['type' => 'text', ],
|
||||
'UserName' => ['type' => 'text', ],
|
||||
'IP' => ['type' => 'text', ],
|
||||
'PlayerPick' => ['type' => 'text', ],
|
||||
'ComputerPick' => ['type' => 'text', ],
|
||||
'Result' => ['type' => 'text', ],
|
||||
'DateTime' => ['type' => 'date', 'null' => TRUE, ],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @method UserFields
|
||||
* @description
|
||||
* Fields and Indexes, Structure for the User Table
|
||||
* @return array
|
||||
*/
|
||||
private function UserFields()
|
||||
{
|
||||
return $fields =
|
||||
[
|
||||
'id' => ['type' => 'int', 'auto_increment' => TRUE, ],
|
||||
'UserName' => ['type' => 'text', ],
|
||||
'Wins' => ['type' => 'int', 'default' => 0, ],
|
||||
'Loses' => ['type' => 'int', 'default' => 0, ],
|
||||
'Ties' => ['type' => 'int', 'default' => 0, ],
|
||||
'IP' => ['type' => 'text', ],
|
||||
'City' => ['type' => 'text', ],
|
||||
'State' => ['type' => 'text', ],
|
||||
'Country' => ['type' => 'text', ],
|
||||
'CountryCode' => ['type' => 'text', ],
|
||||
'FlagURL' => ['type' => 'text', ],
|
||||
'DateCreated' => ['type' => 'date', 'null' => TRUE, ],
|
||||
'DateUpdated' => ['type' => 'date', 'null' => TRUE, ],
|
||||
'DateDeleted' => ['type' => 'date', 'null' => TRUE, ],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user