@@ -11,44 +11,70 @@ public function up()
1111 if ($ this ->db ->driverName === 'mysql ' ) {
1212 $ tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB ' ;
1313 }
14+
15+
16+ // Check if auth_rule_table Table exist
17+ $ auth_rule_table_name = \Yii::$ app ->getModule ('user-management ' )->auth_rule_table ;
18+ if (\Yii::$ app ->db ->schema ->getTableSchema ($ auth_rule_table_name ) === null )
19+ {
20+ // Create auth_rule_table table
21+ $ this ->createTable ($ auth_rule_table_name , [
22+ 'name ' => Schema::TYPE_STRING . '(64) NOT NULL ' ,
23+ 'data ' => Schema::TYPE_TEXT ,
24+ 'created_at ' => Schema::TYPE_INTEGER ,
25+ 'updated_at ' => Schema::TYPE_INTEGER ,
26+ 'PRIMARY KEY (name) ' ,
27+ ], $ tableOptions );
28+ }
29+
30+ // Check if auth_item_table Table exist
31+ $ auth_item_table_name = \Yii::$ app ->getModule ('user-management ' )->auth_item_table ;
32+ if (\Yii::$ app ->db ->schema ->getTableSchema ($ auth_item_table_name ) === null )
33+ {
34+ // Create auth_rule_table table
35+ $ this ->createTable ($ auth_item_table_name , [
36+ 'name ' => Schema::TYPE_STRING . '(64) NOT NULL ' ,
37+ 'type ' => Schema::TYPE_INTEGER . ' NOT NULL ' ,
38+ 'description ' => Schema::TYPE_TEXT ,
39+ 'rule_name ' => Schema::TYPE_STRING . '(64) ' ,
40+ 'data ' => Schema::TYPE_TEXT ,
41+ 'created_at ' => Schema::TYPE_INTEGER ,
42+ 'updated_at ' => Schema::TYPE_INTEGER ,
43+ 'PRIMARY KEY (name) ' ,
44+ 'FOREIGN KEY (rule_name) REFERENCES ' . Yii::$ app ->getModule ('user-management ' )->auth_rule_table . ' (name) ON DELETE SET NULL ON UPDATE CASCADE ' ,
45+ ], $ tableOptions );
46+
47+ $ this ->createIndex ('idx-auth_item-type ' , Yii::$ app ->getModule ('user-management ' )->auth_item_table , 'type ' );
48+ }
1449
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 );
50+ // Check if auth_item_child_table Table exist
51+ $ auth_item_child_table_name = \Yii::$ app ->getModule ('user-management ' )->auth_item_child_table ;
52+ if (\Yii::$ app ->db ->schema ->getTableSchema ($ auth_item_child_table_name ) === null )
53+ {
54+ // Create auth_item_child_table table
55+ $ this ->createTable ($ auth_item_child_table_name , [
56+ 'parent ' => Schema::TYPE_STRING . '(64) NOT NULL ' ,
57+ 'child ' => Schema::TYPE_STRING . '(64) NOT NULL ' ,
58+ 'PRIMARY KEY (parent, child) ' ,
59+ 'FOREIGN KEY (parent) REFERENCES ' . Yii::$ app ->getModule ('user-management ' )->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE ' ,
60+ 'FOREIGN KEY (child) REFERENCES ' . Yii::$ app ->getModule ('user-management ' )->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE ' ,
61+ ], $ tableOptions );
62+ }
2263
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 );
64+ // Check if auth_assignment_table Table exist
65+ $ auth_assignment_table_name = \Yii::$ app ->getModule ('user-management ' )->auth_assignment_table ;
66+ if (\Yii::$ app ->db ->schema ->getTableSchema ($ auth_assignment_table_name ) === null )
67+ {
68+ // Create auth_assignment_table table
69+ $ this ->createTable ($ auth_assignment_table_name , [
70+ 'item_name ' => Schema::TYPE_STRING . '(64) NOT NULL ' ,
71+ 'user_id ' => Schema::TYPE_INTEGER . ' NOT NULL ' ,
72+ 'created_at ' => Schema::TYPE_INTEGER ,
73+ 'PRIMARY KEY (item_name, user_id) ' ,
74+ 'FOREIGN KEY (item_name) REFERENCES ' . Yii::$ app ->getModule ('user-management ' )->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE ' ,
75+ 'FOREIGN KEY (user_id) REFERENCES ' .Yii::$ app ->getModule ('user-management ' )->user_table .' (id) ON DELETE CASCADE ON UPDATE CASCADE ' ,
76+ ], $ tableOptions );
77+ }
5278 }
5379
5480 public function down ()
0 commit comments