@@ -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 ()
0 commit comments