000000015.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package migrate
  2. import (
  3. "golang-fave/engine/sqlw"
  4. )
  5. func Migrate_000000015(db *sqlw.DB, host string) error {
  6. // Table: shop_orders
  7. if _, err := db.Exec(
  8. `CREATE TABLE shop_orders (
  9. id int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI',
  10. create_datetime datetime NOT NULL COMMENT 'Create date/time',
  11. update_datetime datetime NOT NULL COMMENT 'Update date/time',
  12. currency_id int(11) NOT NULL COMMENT 'Currency ID',
  13. currency_name varchar(255) NOT NULL COMMENT 'Currency name',
  14. currency_coefficient float(8,4) NOT NULL DEFAULT '1.0000' COMMENT 'Currency coefficient',
  15. currency_code varchar(10) NOT NULL COMMENT 'Currency code',
  16. currency_symbol varchar(5) NOT NULL COMMENT 'Currency symbol',
  17. client_last_name varchar(64) NOT NULL COMMENT 'Client last name',
  18. client_first_name varchar(64) NOT NULL COMMENT 'Client first name',
  19. client_middle_name varchar(64) NOT NULL DEFAULT '' COMMENT 'Client middle name',
  20. client_phone varchar(20) NOT NULL DEFAULT '' COMMENT 'Client phone',
  21. client_email varchar(64) NOT NULL COMMENT 'Client email',
  22. client_delivery_comment text NOT NULL COMMENT 'Client delivery comment',
  23. client_order_comment text NOT NULL COMMENT 'Client order comment',
  24. status int(1) NOT NULL COMMENT 'new/confirmed/inprogress/canceled/completed',
  25. PRIMARY KEY (id)
  26. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;`,
  27. ); err != nil {
  28. return err
  29. }
  30. // Table: shop_order_products
  31. if _, err := db.Exec(
  32. `CREATE TABLE shop_order_products (
  33. id int(11) NOT NULL AUTO_INCREMENT COMMENT 'AI',
  34. order_id int(11) NOT NULL COMMENT 'Order ID',
  35. product_id int(11) NOT NULL COMMENT 'Product ID',
  36. price float(8,2) NOT NULL COMMENT 'Product price',
  37. quantity int(11) NOT NULL COMMENT 'Quantity',
  38. PRIMARY KEY (id)
  39. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;`,
  40. ); err != nil {
  41. return err
  42. }
  43. // Indexes
  44. if _, err := db.Exec(`ALTER TABLE shop_orders ADD KEY FK_shop_orders_currency_id (currency_id);`); err != nil {
  45. return err
  46. }
  47. if _, err := db.Exec(`ALTER TABLE shop_order_products ADD UNIQUE KEY order_product (order_id,product_id) USING BTREE;`); err != nil {
  48. return err
  49. }
  50. if _, err := db.Exec(`ALTER TABLE shop_order_products ADD KEY FK_shop_order_products_order_id (order_id);`); err != nil {
  51. return err
  52. }
  53. if _, err := db.Exec(`ALTER TABLE shop_order_products ADD KEY FK_shop_order_products_product_id (product_id);`); err != nil {
  54. return err
  55. }
  56. // References
  57. if _, err := db.Exec(`
  58. ALTER TABLE shop_orders ADD CONSTRAINT FK_shop_orders_currency_id
  59. FOREIGN KEY (currency_id) REFERENCES shop_currencies (id) ON DELETE RESTRICT;
  60. `); err != nil {
  61. return err
  62. }
  63. if _, err := db.Exec(`
  64. ALTER TABLE shop_order_products ADD CONSTRAINT FK_shop_order_products_order_id
  65. FOREIGN KEY (order_id) REFERENCES shop_orders (id) ON DELETE RESTRICT;
  66. `); err != nil {
  67. return err
  68. }
  69. if _, err := db.Exec(`
  70. ALTER TABLE shop_order_products ADD CONSTRAINT FK_shop_order_products_product_id
  71. FOREIGN KEY (product_id) REFERENCES shop_products (id) ON DELETE RESTRICT;
  72. `); err != nil {
  73. return err
  74. }
  75. return nil
  76. }