Browse Source

Table references in DB

Vova Tkach 5 years ago
parent
commit
3143753398

+ 1 - 1
cypress/integration/control-panel/001_module_index/001_install_mysql.spec.js

@@ -26,7 +26,7 @@ context('Install MySQL, create first user and login', () => {
     cy.actionWait();
   });
 
-  it('should create first user', () => {
+  xit('should create first user', () => {
     cy.actionStart();
     cy.get('.form-signin input[type=text]').should('have.length', 2);
     cy.get('.form-signin input[type=email]').should('have.length', 1);

+ 7 - 7
cypress/support/commands.js

@@ -72,13 +72,13 @@ Cypress.Commands.add('installCMS', () => {
   cy.get('.form-signin button').click();
   cy.actionWait();
 
-  cy.visitCMS('/cp/');
-  cy.get('.form-signin input[name=first_name]').type('First');
-  cy.get('.form-signin input[name=last_name]').type('Last');
-  cy.get('.form-signin input[name=email]').type('example@example.com');
-  cy.get('.form-signin input[name=password]').type('example@example.com');
-  cy.get('.form-signin button').click();
-  cy.actionWait();
+  // cy.visitCMS('/cp/');
+  // cy.get('.form-signin input[name=first_name]').type('First');
+  // cy.get('.form-signin input[name=last_name]').type('Last');
+  // cy.get('.form-signin input[name=email]').type('example@example.com');
+  // cy.get('.form-signin input[name=password]').type('example@example.com');
+  // cy.get('.form-signin button').click();
+  // cy.actionWait();
 });
 
 Cypress.Commands.add('loginCMS', () => {

+ 2 - 2
modules/module_blog_act_delete.go

@@ -28,10 +28,10 @@ func (this *Modules) RegisterAction_BlogDelete() *Action {
 			}
 
 			// Delete target post with category connection data
-			if _, err := tx.Exec("DELETE FROM blog_posts WHERE id = ?;", pf_id); err != nil {
+			if _, err := tx.Exec("DELETE FROM blog_cat_post_rel WHERE post_id = ?;", pf_id); err != nil {
 				return err
 			}
-			if _, err := tx.Exec("DELETE FROM blog_cat_post_rel WHERE post_id = ?;", pf_id); err != nil {
+			if _, err := tx.Exec("DELETE FROM blog_posts WHERE id = ?;", pf_id); err != nil {
 				return err
 			}
 			return nil

+ 60 - 1
modules/module_index_act_mysql_setup.go

@@ -90,7 +90,7 @@ func (this *Modules) RegisterAction_IndexMysqlSetup() *Action {
 		if _, err = tx.Exec(
 			`INSERT INTO blog_cats (id, user, name, alias, lft, rgt)
 				VALUES
-			(1, 0, 'ROOT', 'ROOT', 1, 24),
+			(1, 1, 'ROOT', 'ROOT', 1, 24),
 			(2, 1, 'Health and food', 'health-and-food', 2, 15),
 			(3, 1, 'News', 'news', 16, 21),
 			(4, 1, 'Hobby', 'hobby', 22, 23),
@@ -117,6 +117,11 @@ func (this *Modules) RegisterAction_IndexMysqlSetup() *Action {
 			wrap.MsgError(err.Error())
 			return
 		}
+		if _, err = tx.Exec(`ALTER TABLE blog_cats ADD KEY FK_blog_cats_user (user);`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
 
 		// Table: blog_cat_post_rel
 		if _, err = tx.Exec(
@@ -148,6 +153,16 @@ func (this *Modules) RegisterAction_IndexMysqlSetup() *Action {
 			wrap.MsgError(err.Error())
 			return
 		}
+		if _, err = tx.Exec(`ALTER TABLE blog_cat_post_rel ADD KEY FK_blog_cat_post_rel_post_id (post_id);`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
+		if _, err = tx.Exec(`ALTER TABLE blog_cat_post_rel ADD KEY FK_blog_cat_post_rel_category_id (category_id);`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
 
 		// Table: blog_posts
 		if _, err = tx.Exec(
@@ -244,6 +259,11 @@ func (this *Modules) RegisterAction_IndexMysqlSetup() *Action {
 			wrap.MsgError(err.Error())
 			return
 		}
+		if _, err = tx.Exec(`ALTER TABLE blog_posts ADD KEY FK_blog_posts_user (user);`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
 
 		// Table: pages
 		if _, err = tx.Exec(
@@ -341,6 +361,11 @@ func (this *Modules) RegisterAction_IndexMysqlSetup() *Action {
 			wrap.MsgError(err.Error())
 			return
 		}
+		if _, err = tx.Exec(`ALTER TABLE pages ADD KEY FK_pages_user (user);`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
 
 		// Table: users
 		if _, err = tx.Exec(
@@ -359,12 +384,46 @@ func (this *Modules) RegisterAction_IndexMysqlSetup() *Action {
 			wrap.MsgError(err.Error())
 			return
 		}
+		if _, err = tx.Exec(
+			`INSERT INTO users (id, first_name, last_name, email, password, admin, active) VALUES (1, 'First Name', 'Last Name', 'example@example.com', '23463b99b62a72f26ed677cc556c44e8', 1, 1);`,
+		); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
 		if _, err = tx.Exec(`ALTER TABLE users ADD UNIQUE KEY email (email);`); err != nil {
 			tx.Rollback()
 			wrap.MsgError(err.Error())
 			return
 		}
 
+		// References
+		if _, err = tx.Exec(`ALTER TABLE blog_cats ADD CONSTRAINT FK_blog_cats_user FOREIGN KEY (user) REFERENCES users (id) ON DELETE RESTRICT;`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
+		if _, err = tx.Exec(`ALTER TABLE blog_cat_post_rel ADD CONSTRAINT FK_blog_cat_post_rel_category_id FOREIGN KEY (category_id) REFERENCES blog_cats (id) ON DELETE RESTRICT;`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
+		if _, err = tx.Exec(`ALTER TABLE blog_cat_post_rel ADD CONSTRAINT FK_blog_cat_post_rel_post_id FOREIGN KEY (post_id) REFERENCES blog_posts (id) ON DELETE RESTRICT;`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
+		if _, err = tx.Exec(`ALTER TABLE blog_posts ADD CONSTRAINT FK_blog_posts_user FOREIGN KEY (user) REFERENCES users (id) ON DELETE RESTRICT;`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
+		if _, err = tx.Exec(`ALTER TABLE pages ADD CONSTRAINT FK_pages_user FOREIGN KEY (user) REFERENCES users (id) ON DELETE RESTRICT;`); err != nil {
+			tx.Rollback()
+			wrap.MsgError(err.Error())
+			return
+		}
+
 		// Commit all changes
 		err = tx.Commit()
 		if err != nil {

+ 14 - 1
support/schema.sql

@@ -1,3 +1,4 @@
+# Tables with keys
 CREATE TABLE `blog_cats` (
 	`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI',
 	`user` int(11) NOT NULL COMMENT 'User id',
@@ -9,6 +10,7 @@ CREATE TABLE `blog_cats` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ALTER TABLE `blog_cats` ADD UNIQUE KEY `alias` (`alias`);
 ALTER TABLE `blog_cats` ADD KEY `lft` (`lft`), ADD KEY `rgt` (`rgt`);
+ALTER TABLE `blog_cats` ADD KEY `FK_blog_cats_user` (`user`);
 
 CREATE TABLE `blog_cat_post_rel` (
 	`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI',
@@ -18,6 +20,8 @@ CREATE TABLE `blog_cat_post_rel` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ALTER TABLE `blog_cat_post_rel` ADD KEY `post_id` (`post_id`), ADD KEY `category_id` (`category_id`);
 ALTER TABLE `blog_cat_post_rel` ADD UNIQUE KEY `post_category` (`post_id`,`category_id`) USING BTREE;
+ALTER TABLE `blog_cat_post_rel` ADD KEY `FK_blog_cat_post_rel_post_id` (`post_id`);
+ALTER TABLE `blog_cat_post_rel` ADD KEY `FK_blog_cat_post_rel_category_id` (`category_id`);
 
 CREATE TABLE `blog_posts` (
 	`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI',
@@ -31,6 +35,7 @@ CREATE TABLE `blog_posts` (
 	PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ALTER TABLE `blog_posts` ADD UNIQUE KEY `alias` (`alias`);
+ALTER TABLE `blog_posts` ADD KEY `FK_blog_posts_user` (`user`);
 
 CREATE TABLE `pages` (
 	`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI',
@@ -47,6 +52,7 @@ CREATE TABLE `pages` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ALTER TABLE `pages` ADD UNIQUE KEY `alias` (`alias`);
 ALTER TABLE `pages` ADD KEY `alias_active` (`alias`,`active`) USING BTREE;
+ALTER TABLE `pages` ADD KEY `FK_pages_user` (`user`);
 
 CREATE TABLE `users` (
 	`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI',
@@ -58,4 +64,11 @@ CREATE TABLE `users` (
 	`active` int(1) NOT NULL COMMENT 'Is active user or not',
 	PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-ALTER TABLE `users` ADD UNIQUE KEY `email` (`email`);
+ALTER TABLE `users` ADD UNIQUE KEY `email` (`email`);
+
+# References
+ALTER TABLE `blog_cats` ADD CONSTRAINT `FK_blog_cats_user` FOREIGN KEY (`user`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
+ALTER TABLE `blog_cat_post_rel` ADD CONSTRAINT `FK_blog_cat_post_rel_category_id` FOREIGN KEY (`category_id`) REFERENCES `blog_cats` (`id`) ON DELETE RESTRICT;
+ALTER TABLE `blog_cat_post_rel` ADD CONSTRAINT `FK_blog_cat_post_rel_post_id` FOREIGN KEY (`post_id`) REFERENCES `blog_posts` (`id`) ON DELETE RESTRICT;
+ALTER TABLE `blog_posts` ADD CONSTRAINT `FK_blog_posts_user` FOREIGN KEY (`user`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
+ALTER TABLE `pages` ADD CONSTRAINT `FK_pages_user` FOREIGN KEY (`user`) REFERENCES `users` (`id`) ON DELETE RESTRICT;