action_mysql.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package actions
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "strconv"
  6. utils "golang-fave/engine/wrapper/utils"
  7. )
  8. func (this *Action) Action_mysql() {
  9. pf_host := this.wrapper.R.FormValue("host")
  10. pf_port := this.wrapper.R.FormValue("port")
  11. pf_name := this.wrapper.R.FormValue("name")
  12. pf_user := this.wrapper.R.FormValue("user")
  13. pf_password := this.wrapper.R.FormValue("password")
  14. if pf_host == "" {
  15. this.msg_error(`Please specify host for MySQL connection`)
  16. return
  17. }
  18. if pf_port == "" {
  19. this.msg_error(`Please specify host port for MySQL connection`)
  20. return
  21. }
  22. if _, err := strconv.Atoi(pf_port); err != nil {
  23. this.msg_error(`MySQL host port must be integer number`)
  24. return
  25. }
  26. if pf_name == "" {
  27. this.msg_error(`Please specify MySQL database name`)
  28. return
  29. }
  30. if pf_user == "" {
  31. this.msg_error(`Please specify MySQL user`)
  32. return
  33. }
  34. // Try connect to mysql
  35. db, err := sql.Open("mysql", pf_user+":"+pf_password+"@tcp("+pf_host+":"+pf_port+")/"+pf_name)
  36. if err != nil {
  37. this.msg_error(err.Error())
  38. return
  39. }
  40. defer db.Close()
  41. err = db.Ping()
  42. if err != nil {
  43. this.msg_error(err.Error())
  44. return
  45. }
  46. // Try to install all tables
  47. _, err = db.Query(fmt.Sprintf("CREATE TABLE `%s`.`users` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI', `first_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'User first name', `last_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'User last name', `email` VARCHAR(64) NOT NULL COMMENT 'User email', `password` VARCHAR(32) NOT NULL COMMENT 'User password (MD5)', PRIMARY KEY (`id`)) ENGINE = InnoDB;", pf_name))
  48. if err != nil {
  49. this.msg_error(err.Error())
  50. return
  51. }
  52. _, err = db.Query(fmt.Sprintf("CREATE TABLE `%s`.`pages` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI', `parent` int(11) NOT NULL DEFAULT '0' COMMENT 'Parent page id', `user` int(11) NOT NULL COMMENT 'User id', `name` varchar(255) NOT NULL COMMENT 'Page name', `slug` varchar(255) NOT NULL COMMENT 'Page url part', `content` text NOT NULL COMMENT 'Page content', `meta_title` varchar(255) NOT NULL DEFAULT '' COMMENT 'Page meta title', `meta_keywords` varchar(255) NOT NULL DEFAULT '' COMMENT 'Page meta keywords', `meta_description` varchar(510) NOT NULL DEFAULT '' COMMENT 'Page meta description', `datetime` datetime NOT NULL COMMENT 'Creation date/time', `status` enum('draft','public','trash') NOT NULL COMMENT 'Page status', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;", pf_name))
  53. if err != nil {
  54. this.msg_error(err.Error())
  55. return
  56. }
  57. // Save mysql config file
  58. err = utils.MySqlConfigWrite(this.wrapper.DirVHostHome, pf_host, pf_port, pf_name, pf_user, pf_password)
  59. if err != nil {
  60. this.msg_error(err.Error())
  61. return
  62. }
  63. // Reload current page
  64. this.write(fmt.Sprintf(`window.location.reload(false);`))
  65. }