-- +goose Up
-- create routes table
CREATE TABLE IF NOT EXISTS b2b_routes (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  name        VARCHAR(255) NOT NULL UNIQUE,
  path        VARCHAR(255) NULL,
  component   VARCHAR(255) NOT NULL COMMENT 'path to component file',
  meta        JSON DEFAULT '{}',
  active      BOOLEAN DEFAULT TRUE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- INSERT IGNORE INTO b2b_routes
--   (name, path, component, meta, active)
-- VALUES
--   ('root', '', '', '{"trans": "route.root"}', 0),
--   ('home', '', '/views/HomeView.vue', '{"trans": "route.home"}', 1),
--   ('login', 'login', '/views/LoginView.vue', '{"guest":true}', 1),
--   ('register', 'register', '/views/RegisterView.vue', '{"guest":true}', 1),
--   ('password-recovery', 'password-recovery', '/views/PasswordRecoveryView.vue', '{"guest":true}', 1),
--   ('reset-password', 'reset-password', '/views/ResetPasswordView.vue', '{"guest":true}', 1),
--   ('verify-email', 'verify-email', '/views/VerifyEmailView.vue', '{"guest":true}', 1);

INSERT IGNORE INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES 
(1, 'root', '', '', '{"trans": "route.root"}', 0),
(2, 'home', '', '/views/HomeView.vue', '{"trans": "route.home"}', 1),
(3, 'login', 'login', '/views/LoginView.vue', '{"guest":true}', 1),
(4, 'register', 'register', '/views/RegisterView.vue', '{"guest":true}', 1),
(5, 'password-recovery', 'password-recovery', '/views/PasswordRecoveryView.vue', '{"guest":true}', 1),
(6, 'reset-password', 'reset-password', '/views/ResetPasswordForm.vue', '{"guest":true}', 1),
(7, 'verify-email', 'verify-email', '/views/VerifyEmailView.vue', '{"guest":true}', 1),
(8, 'category', 'category/:category_id-:link_rewrite', '/views/CategoryView.vue', '{"guest":true}', 1),
(9, 'admin-products-category', 'products/:category_id-:link_rewrite', '/components/admin/PageProducts.vue', '{
  "guest": true
}', 1),
(10, 'customer-addresses', 'addresses', '/components/customer/PageAddresses.vue', '{"guest":true}', 1),
(11, 'customer-carts', 'carts', '/components/customer/PageCarts.vue', '{"guest":true}', 1),
(12, 'customer-orders', 'orders', '/components/customer/PageOrders.vue', '{"guest":true}', 1),
(13, 'customer-statistic', 'statistic', '/components/customer/PageStatistic.vue', '{"guest":true}', 1),
(14, 'customer-product-details', 'products/:product_id/:link_rewrite', '/components/admin/ProductDetailView.vue', '{"guest":true}', 1),
(15, 'admin-products', 'products', '/components/admin/PageProducts.vue', '{"guest":true}', 1);

CREATE TABLE IF NOT EXISTS b2b_top_menu (
  menu_id INT AUTO_INCREMENT NOT NULL,
  label LONGTEXT NOT NULL DEFAULT '{}',
  parent_id INT NULL DEFAULT NULL,
  params LONGTEXT NOT NULL DEFAULT '{}',
  active TINYINT NOT NULL DEFAULT 1,
  position INT NOT NULL DEFAULT 1,
  PRIMARY KEY (menu_id),
  CONSTRAINT FK_b2b_top_menu_parent_id FOREIGN KEY (parent_id) 
      REFERENCES b2b_top_menu (menu_id) 
      ON DELETE RESTRICT ON UPDATE RESTRICT,
  INDEX FK_b2b_top_menu_parent_id_idx (parent_id ASC)
) ENGINE = InnoDB;

INSERT IGNORE INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES 
(1, '{"name":"root","trans":{"pl":{"label":"Menu główne"},"en":{"label":"Main Menu"},"de":{"label":"Hauptmenü"}}}', NULL, '{}', 1, 1),
(2, '{
  "name": "admin-products",
  "trans": {
    "pl": {
      "label": "Products"
    },
    "en": {
      "label": "Products"
    },
    "de": {
      "label": "Products"
    }
  },
  "icon" : "quill:list"
}', 1, '{"route":{"name":"admin-products","params":{"locale":""}}}', 1, 1),
(3, '{
  "name": "customer-carts",
  "trans": {
    "pl": {
      "label": "Carts"
    },
    "en": {
      "label": "Carts"
    },
    "de": {
      "label": "Carts"
    }
  },
  "icon" : "proicons:cart"
}', 1, '{"route":{"name":"customer-carts","params":{"locale":""}}}', 1, 1),
(4, '{
  "name": "customer-addresses",
  "trans": {
    "pl": {
      "label": "Addresses"
    },
    "en": {
      "label": "Addresses"
    },
    "de": {
      "label": "Addresses"
    }
  },
  "icon" : "ph:address-book"
}', 1, '{"route":{"name":"customer-addresses","params":{"locale":""}}}', 1, 1),
(5, '{
  "name": "customer-orders",
  "trans": {
    "pl": {
      "label": "Orders"
    },
    "en": {
      "label": "Orders"
    },
    "de": {
      "label": "Orders"
    }
  },
  "icon" : "lsicon:order-integral-outline"
}', 1, '{"route":{"name":"customer-orders","params":{"locale":""}}}', 1, 1),
(6, '{
  "name": "customer-statistic",
  "trans": {
    "pl": {
      "label": "Statistic"
    },
    "en": {
      "label": "Statistic"
    },
    "de": {
      "label": "Statistic"
    }
  },
  "icon" : "akar-icons:statistic-up"
}', 1, '{
  "route": {
    "name": "customer-statistic",
    "params": {
      "locale": ""
    }
  }
}', 1, 1),
(9, '{"name":"carts","trans":{"pl":{"label":"Koszyki"},"en":{"label":"Carts"},"de":{"label":"Warenkörbe"}}}', 3, '{"route":{"name":"home","params":{"locale":""}}}', 1, 1);



-- +goose Down

DROP TABLE IF EXISTS b2b_routes;
DROP TABLE IF EXISTS b2b_top_menu;
DROP FUNCTION IF EXISTS `slugify_eu`;
