239 lines
4.2 KiB
SQL
239 lines
4.2 KiB
SQL
-- +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',
|
|
layout VARCHAR(50) DEFAULT 'default' COMMENT "'default' | 'empty'",
|
|
meta JSON DEFAULT '{}',
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
sort_order INT DEFAULT 0,
|
|
parent_id INT NULL,
|
|
|
|
CONSTRAINT fk_parent
|
|
FOREIGN KEY (parent_id)
|
|
REFERENCES b2b_routes(id)
|
|
ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
INSERT IGNORE INTO b2b_routes
|
|
(name, path, component, layout, meta, is_active, sort_order, parent_id)
|
|
VALUES
|
|
('root', '', '', 'default', '{"trans": "route.root"}', 0, 0, 0),
|
|
('home', '', '@/views/HomeView.vue', 'default', '{"trans": "route.home"}', 1, 0, 0),
|
|
('login', 'login', '@/views/LoginView.vue', 'empty', '{"guest":true}', 1, 2, NULL),
|
|
('register', 'register', '@/views/RegisterView.vue', 'empty', '{"guest":true}', 1, 3, NULL),
|
|
('password-recovery', 'password-recovery', '@/views/PasswordRecoveryView.vue', 'empty', '{"guest":true}', 1, 4, NULL),
|
|
('reset-password', 'reset-password', '@/views/ResetPasswordView.vue', 'empty', '{"guest":true}', 1, 5, NULL),
|
|
('verify-email', 'verify-email', '@/views/VerifyEmailView.vue', 'empty', '{"guest":true}', 1, 6, NULL);
|
|
|
|
|
|
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`)
|
|
VALUES
|
|
-- ROOT
|
|
(
|
|
1,
|
|
'{
|
|
"name": "root",
|
|
"trans": {
|
|
"pl": "Menu główne",
|
|
"en": "Main Menu",
|
|
"de": "Hauptmenü"
|
|
}
|
|
}',
|
|
NULL,
|
|
'{}'
|
|
),
|
|
-- LEVEL 1
|
|
(
|
|
2,
|
|
'{
|
|
"name": "dashboard",
|
|
"trans": {
|
|
"pl": "Panel",
|
|
"en": "Dashboard",
|
|
"de": "Dashboard"
|
|
}
|
|
}',
|
|
1,
|
|
'{}'
|
|
),
|
|
(
|
|
3,
|
|
'{
|
|
"name": "orders",
|
|
"trans": {
|
|
"pl": "Zamówienia",
|
|
"en": "Orders",
|
|
"de": "Bestellungen"
|
|
}
|
|
}',
|
|
1,
|
|
'{}'
|
|
),
|
|
(
|
|
4,
|
|
'{
|
|
"name": "customers",
|
|
"trans": {
|
|
"pl": "Klienci",
|
|
"en": "Customers",
|
|
"de": "Kunden"
|
|
}
|
|
}',
|
|
1,
|
|
'{}'
|
|
),
|
|
(
|
|
5,
|
|
'{
|
|
"name": "products",
|
|
"trans": {
|
|
"pl": "Produkty",
|
|
"en": "Products",
|
|
"de": "Produkte"
|
|
}
|
|
}',
|
|
1,
|
|
'{}'
|
|
),
|
|
(
|
|
6,
|
|
'{
|
|
"name": "reports",
|
|
"trans": {
|
|
"pl": "Raporty",
|
|
"en": "Reports",
|
|
"de": "Berichte"
|
|
}
|
|
}',
|
|
1,
|
|
'{}'
|
|
),
|
|
-- LEVEL 2 (Orders)
|
|
(
|
|
7,
|
|
'{
|
|
"name": "order_list",
|
|
"trans": {
|
|
"pl": "Lista zamówień",
|
|
"en": "Order List",
|
|
"de": "Bestellliste"
|
|
}
|
|
}',
|
|
3,
|
|
'{}'
|
|
),
|
|
(
|
|
8,
|
|
'{
|
|
"name": "pending_orders",
|
|
"trans": {
|
|
"pl": "Oczekujące zamówienia",
|
|
"en": "Pending Orders",
|
|
"de": "Ausstehende Bestellungen"
|
|
}
|
|
}',
|
|
3,
|
|
'{}'
|
|
),
|
|
(
|
|
9,
|
|
'{
|
|
"name": "carts",
|
|
"trans": {
|
|
"pl": "Koszyki",
|
|
"en": "Carts",
|
|
"de": "Warenkörbe"
|
|
}
|
|
}',
|
|
3,
|
|
'{}'
|
|
),
|
|
-- LEVEL 2 (Products)
|
|
(
|
|
10,
|
|
'{
|
|
"name": "product_list",
|
|
"trans": {
|
|
"pl": "Lista produktów",
|
|
"en": "Product List",
|
|
"de": "Produktliste"
|
|
}
|
|
}',
|
|
5,
|
|
'{}'
|
|
),
|
|
(
|
|
11,
|
|
'{
|
|
"name": "categories",
|
|
"trans": {
|
|
"pl": "Kategorie",
|
|
"en": "Categories",
|
|
"de": "Kategorien"
|
|
}
|
|
}',
|
|
5,
|
|
'{}'
|
|
),
|
|
(
|
|
12,
|
|
'{
|
|
"name": "inventory",
|
|
"trans": {
|
|
"pl": "Magazyn",
|
|
"en": "Inventory",
|
|
"de": "Lagerbestand"
|
|
}
|
|
}',
|
|
5,
|
|
'{}'
|
|
),
|
|
-- LEVEL 2 (Customers)
|
|
(
|
|
13,
|
|
'{
|
|
"name": "customer_list",
|
|
"trans": {
|
|
"pl": "Lista klientów",
|
|
"en": "Customer List",
|
|
"de": "Kundenliste"
|
|
}
|
|
}',
|
|
4,
|
|
'{}'
|
|
),
|
|
(
|
|
14,
|
|
'{
|
|
"name": "customer_groups",
|
|
"trans": {
|
|
"pl": "Grupy klientów",
|
|
"en": "Customer Groups",
|
|
"de": "Kundengruppen"
|
|
}
|
|
}',
|
|
4,
|
|
'{}'
|
|
);
|
|
-- +goose Down
|
|
|
|
DROP TABLE IF EXISTS b2b_routes;
|
|
|