127 lines
4.0 KiB
PHP
127 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace Dhiva\Core;
|
|
|
|
class Tenancy
|
|
{
|
|
public static function createTenancy($res)
|
|
{
|
|
self::dbtenancy($res);
|
|
}
|
|
public static function connectTenancy($res)
|
|
{
|
|
$db = \Config\Database::forge();
|
|
$db = new \Config\Database;
|
|
$dbSelect = $db->postgre;
|
|
$dbSelect['schema'] = $res;
|
|
return \Config\Database::forge($dbSelect);
|
|
}
|
|
public static function disconnectTenancy()
|
|
{
|
|
$db = \Config\Database::forge();
|
|
$db = new \Config\Database;
|
|
$dbSelect = $db->postgre;
|
|
$dbSelect['schema'] = 'public';
|
|
return \Config\Database::forge($dbSelect);
|
|
}
|
|
private static function dbtenancy($res)
|
|
{
|
|
$db = \Config\Database::connect();
|
|
$schemaName = '"' . $res . '"';
|
|
$query = $db->query('CREATE SCHEMA ' . $schemaName);
|
|
if (!$query) {
|
|
return 'Gagal membuat ' . $schemaName;
|
|
}
|
|
$db = new \Config\Database;
|
|
$dbSelect = $db->postgre;
|
|
$dbSelect['schema'] = $schemaName;
|
|
$forge = \Config\Database::forge($dbSelect);
|
|
// $forge->addField([
|
|
// 'endpoint_id' => [
|
|
// 'type' => 'INT',
|
|
// 'constraint' => 255,
|
|
// 'auto_increment' => true,
|
|
// 'unique' => true,
|
|
// ],
|
|
// 'value' => [
|
|
// 'type' => 'VARCHAR',
|
|
// 'constraint' => 200,
|
|
// ],
|
|
// 'description' => [
|
|
// 'type' => 'VARCHAR',
|
|
// 'constraint' => 200,
|
|
// 'null' => true,
|
|
// ],
|
|
// 'created_by' => [
|
|
// 'type' => 'VARCHAR',
|
|
// 'constraint' => 200,
|
|
// 'null' => true,
|
|
// ],
|
|
// 'created_at timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP',
|
|
// ]);
|
|
// $forge->addKey('endpoint_id', true);
|
|
// $forge->createTable('endpoint');
|
|
|
|
$forge->addField([
|
|
'super_user_id' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'super_group_id' => [
|
|
'type' => 'TEXT',
|
|
'null' => true,
|
|
],
|
|
'name' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 50,
|
|
'null' => true,
|
|
],
|
|
'email' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 50,
|
|
'null' => true,
|
|
],
|
|
'username' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 50,
|
|
'null' => true,
|
|
],
|
|
'password' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'avatar' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'status' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'token' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'login_date' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'access_at' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'is_admin' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'unit_id' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 200,
|
|
],
|
|
'created_at timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP',
|
|
]);
|
|
$forge->addKey('super_user_id', true);
|
|
$forge->createTable('super_user');
|
|
}
|
|
}
|