Skip to content

Commit d2b5021

Browse files
committed
Merge pull request #62 from mnglkhn/master
added checks to see if tables already exist
2 parents 7fc20a4 + ce58260 commit d2b5021

4 files changed

Lines changed: 114 additions & 72 deletions

migrations/m140608_173539_create_user_table.php

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,24 @@ public function safeUp()
1313
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
1414
}
1515

16-
$this->createTable(Yii::$app->getModule('user-management')->user_table, array(
17-
'id' => 'pk',
18-
'username' => 'string not null',
19-
'auth_key' => 'varchar(32) not null',
20-
'password_hash' => 'string not null',
21-
'confirmation_token' => 'string',
22-
'status' => 'int not null default 1',
23-
'superadmin' => 'smallint default 0',
24-
'created_at' => 'int not null',
25-
'updated_at' => 'int not null',
26-
), $tableOptions);
16+
// Check if user Table exist
17+
// $tablename = \Yii::$app->db->tablePrefix.'user';
18+
$tablename = \Yii::$app->getModule('user-management')->user_table;
19+
if (\Yii::$app->db->schema->getTableSchema($tablename) === null)
20+
{
21+
// Create user table
22+
$this->createTable($tablename, array(
23+
'id' => 'pk',
24+
'username' => 'string not null',
25+
'auth_key' => 'varchar(32) not null',
26+
'password_hash' => 'string not null',
27+
'confirmation_token' => 'string',
28+
'status' => 'int not null default 1',
29+
'superadmin' => 'smallint default 0',
30+
'created_at' => 'int not null',
31+
'updated_at' => 'int not null',
32+
), $tableOptions);
33+
}
2734

2835

2936
}

migrations/m140611_133903_init_rbac.php

Lines changed: 61 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,44 +11,69 @@ public function up()
1111
if ($this->db->driverName === 'mysql') {
1212
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
1313
}
14+
15+
// Check if auth_rule_table Table exist
16+
$auth_rule_table_name = \Yii::$app->getModule('user-management')->auth_rule_table;
17+
if (\Yii::$app->db->schema->getTableSchema($auth_rule_table_name) === null)
18+
{
19+
// Create auth_rule_table table
20+
$this->createTable($auth_rule_table_name, [
21+
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
22+
'data' => Schema::TYPE_TEXT,
23+
'created_at' => Schema::TYPE_INTEGER,
24+
'updated_at' => Schema::TYPE_INTEGER,
25+
'PRIMARY KEY (name)',
26+
], $tableOptions);
27+
}
28+
29+
// Check if auth_item_table Table exist
30+
$auth_item_table_name = \Yii::$app->getModule('user-management')->auth_item_table;
31+
if (\Yii::$app->db->schema->getTableSchema($auth_item_table_name) === null)
32+
{
33+
// Create auth_item_table table
34+
$this->createTable($auth_item_table_name, [
35+
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
36+
'type' => Schema::TYPE_INTEGER . ' NOT NULL',
37+
'description' => Schema::TYPE_TEXT,
38+
'rule_name' => Schema::TYPE_STRING . '(64)',
39+
'data' => Schema::TYPE_TEXT,
40+
'created_at' => Schema::TYPE_INTEGER,
41+
'updated_at' => Schema::TYPE_INTEGER,
42+
'PRIMARY KEY (name)',
43+
'FOREIGN KEY (rule_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_rule_table . ' (name) ON DELETE SET NULL ON UPDATE CASCADE',
44+
], $tableOptions);
45+
46+
$this->createIndex('idx-auth_item-type', Yii::$app->getModule('user-management')->auth_item_table, 'type');
47+
}
1448

15-
$this->createTable(Yii::$app->getModule('user-management')->auth_rule_table, [
16-
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
17-
'data' => Schema::TYPE_TEXT,
18-
'created_at' => Schema::TYPE_INTEGER,
19-
'updated_at' => Schema::TYPE_INTEGER,
20-
'PRIMARY KEY (name)',
21-
], $tableOptions);
49+
// Check if auth_item_child_table Table exist
50+
$auth_item_child_table_name = \Yii::$app->getModule('user-management')->auth_item_child_table;
51+
if (\Yii::$app->db->schema->getTableSchema($auth_item_child_table_name) === null)
52+
{
53+
// Create auth_item_child_table table
54+
$this->createTable($auth_item_child_table_name, [
55+
'parent' => Schema::TYPE_STRING . '(64) NOT NULL',
56+
'child' => Schema::TYPE_STRING . '(64) NOT NULL',
57+
'PRIMARY KEY (parent, child)',
58+
'FOREIGN KEY (parent) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
59+
'FOREIGN KEY (child) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
60+
], $tableOptions);
61+
}
2262

23-
$this->createTable(Yii::$app->getModule('user-management')->auth_item_table, [
24-
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
25-
'type' => Schema::TYPE_INTEGER . ' NOT NULL',
26-
'description' => Schema::TYPE_TEXT,
27-
'rule_name' => Schema::TYPE_STRING . '(64)',
28-
'data' => Schema::TYPE_TEXT,
29-
'created_at' => Schema::TYPE_INTEGER,
30-
'updated_at' => Schema::TYPE_INTEGER,
31-
'PRIMARY KEY (name)',
32-
'FOREIGN KEY (rule_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_rule_table . ' (name) ON DELETE SET NULL ON UPDATE CASCADE',
33-
], $tableOptions);
34-
$this->createIndex('idx-auth_item-type', Yii::$app->getModule('user-management')->auth_item_table, 'type');
35-
36-
$this->createTable(Yii::$app->getModule('user-management')->auth_item_child_table, [
37-
'parent' => Schema::TYPE_STRING . '(64) NOT NULL',
38-
'child' => Schema::TYPE_STRING . '(64) NOT NULL',
39-
'PRIMARY KEY (parent, child)',
40-
'FOREIGN KEY (parent) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
41-
'FOREIGN KEY (child) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
42-
], $tableOptions);
43-
44-
$this->createTable(Yii::$app->getModule('user-management')->auth_assignment_table, [
45-
'item_name' => Schema::TYPE_STRING . '(64) NOT NULL',
46-
'user_id' => Schema::TYPE_INTEGER . ' NOT NULL',
47-
'created_at' => Schema::TYPE_INTEGER,
48-
'PRIMARY KEY (item_name, user_id)',
49-
'FOREIGN KEY (item_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
50-
'FOREIGN KEY (user_id) REFERENCES '.Yii::$app->getModule('user-management')->user_table.' (id) ON DELETE CASCADE ON UPDATE CASCADE',
51-
], $tableOptions);
63+
// Check if auth_assignment_table Table exist
64+
$auth_assignment_table_name = \Yii::$app->getModule('user-management')->auth_assignment_table;
65+
if (\Yii::$app->db->schema->getTableSchema($auth_assignment_table_name) === null)
66+
{
67+
// Create auth_assignment_table table
68+
$this->createTable($auth_assignment_table_name, [
69+
'item_name' => Schema::TYPE_STRING . '(64) NOT NULL',
70+
'user_id' => Schema::TYPE_INTEGER . ' NOT NULL',
71+
'created_at' => Schema::TYPE_INTEGER,
72+
'PRIMARY KEY (item_name, user_id)',
73+
'FOREIGN KEY (item_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
74+
'FOREIGN KEY (user_id) REFERENCES '.Yii::$app->getModule('user-management')->user_table.' (id) ON DELETE CASCADE ON UPDATE CASCADE',
75+
], $tableOptions);
76+
}
5277
}
5378

5479
public function down()

migrations/m140808_073114_create_auth_item_group_table.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,25 @@ public function safeUp()
1111
{
1212
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
1313
}
14-
15-
$this->createTable(Yii::$app->getModule('user-management')->auth_item_group_table, [
16-
'code' => 'varchar(64) NOT NULL',
17-
'name' => 'varchar(255) NOT NULL',
18-
19-
'created_at' => 'int',
20-
'updated_at' => 'int',
21-
'PRIMARY KEY (code)',
22-
23-
], $tableOptions);
24-
25-
$this->addColumn(Yii::$app->getModule('user-management')->auth_item_table, 'group_code', 'varchar(64)');
26-
$this->addForeignKey('fk_auth_item_group_code', Yii::$app->getModule('user-management')->auth_item_table, 'group_code', Yii::$app->getModule('user-management')->auth_item_group_table, 'code', 'SET NULL', 'CASCADE');
14+
15+
// Check if auth_item_group_table Table exist
16+
$table_name = \Yii::$app->getModule('user-management')->auth_item_group_table;
17+
if (\Yii::$app->db->schema->getTableSchema($table_name) === null)
18+
{
19+
// Create auth_item_group_table table
20+
$this->createTable($table_name, [
21+
'code' => 'varchar(64) NOT NULL',
22+
'name' => 'varchar(255) NOT NULL',
23+
24+
'created_at' => 'int',
25+
'updated_at' => 'int',
26+
'PRIMARY KEY (code)',
27+
28+
], $tableOptions);
29+
30+
$this->addColumn(Yii::$app->getModule('user-management')->auth_item_table, 'group_code', 'varchar(64)');
31+
$this->addForeignKey('fk_auth_item_group_code', Yii::$app->getModule('user-management')->auth_item_table, 'group_code', Yii::$app->getModule('user-management')->auth_item_group_table, 'code', 'SET NULL', 'CASCADE');
32+
}
2733

2834
Yii::$app->cache->flush();
2935

migrations/m141023_141535_create_user_visit_log.php

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,22 @@ public function safeUp()
1212
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
1313
}
1414

15-
$this->createTable(Yii::$app->getModule('user-management')->user_visit_log_table, array(
16-
'id' => 'pk',
17-
'token' => 'string not null',
18-
'ip' => 'varchar(15) not null',
19-
'language' => 'char(2) not null',
20-
'browser_and_os' => 'string not null',
21-
'user_id' => 'int',
22-
'visit_time' => 'int not null',
23-
0 => 'FOREIGN KEY (user_id) REFERENCES '.Yii::$app->getModule('user-management')->user_table.' (id) ON DELETE SET NULL ON UPDATE CASCADE',
24-
), $tableOptions);
25-
26-
15+
// Check if user_visit_log_table Table exist
16+
$table_name = \Yii::$app->getModule('user-management')->user_visit_log_table;
17+
if (\Yii::$app->db->schema->getTableSchema($table_name) === null)
18+
{
19+
// Create user_visit_log_table table
20+
$this->createTable($table_name, array(
21+
'id' => 'pk',
22+
'token' => 'string not null',
23+
'ip' => 'varchar(15) not null',
24+
'language' => 'char(2) not null',
25+
'browser_and_os' => 'string not null',
26+
'user_id' => 'int',
27+
'visit_time' => 'int not null',
28+
0 => 'FOREIGN KEY (user_id) REFERENCES '.Yii::$app->getModule('user-management')->user_table.' (id) ON DELETE SET NULL ON UPDATE CASCADE',
29+
), $tableOptions);
30+
}
2731
}
2832

2933
public function safeDown()

0 commit comments

Comments
 (0)