Update schemas with new fields, create initial import from prod script

This commit is contained in:
2025-01-25 09:45:50 -05:00
parent 31e1568868
commit 353ae4540e
4 changed files with 879 additions and 15 deletions

View File

@@ -408,7 +408,7 @@ SELECT
c.id as category_id,
c.name,
c.description,
c.parent_category,
p.name as parent_name,
c.status,
cm.product_count,
cm.active_products,
@@ -424,5 +424,7 @@ SELECT
END as performance_rating
FROM
categories c
LEFT JOIN
categories p ON c.parent_id = p.id
LEFT JOIN
category_metrics cm ON c.id = cm.category_id;

View File

@@ -6,45 +6,72 @@ SET FOREIGN_KEY_CHECKS = 0;
CREATE TABLE products (
product_id BIGINT NOT NULL,
title VARCHAR(255) NOT NULL,
description TEXT,
SKU VARCHAR(50) NOT NULL,
created_at TIMESTAMP NULL,
first_received TIMESTAMP NULL,
stock_quantity INT DEFAULT 0,
price DECIMAL(10, 3) NOT NULL,
regular_price DECIMAL(10, 3) NOT NULL,
cost_price DECIMAL(10, 3),
landing_cost_price DECIMAL(10, 3),
barcode VARCHAR(50),
harmonized_tariff_code VARCHAR(20),
updated_at TIMESTAMP,
visible BOOLEAN DEFAULT true,
managing_stock BOOLEAN DEFAULT true,
replenishable BOOLEAN DEFAULT true,
vendor VARCHAR(100),
vendor_reference VARCHAR(100),
notions_reference VARCHAR(100),
permalink VARCHAR(255),
categories TEXT,
image VARCHAR(255),
image_175 VARCHAR(255),
image_full VARCHAR(255),
brand VARCHAR(100),
line VARCHAR(100),
subline VARCHAR(100),
artist VARCHAR(100),
options TEXT,
tags TEXT,
moq INT DEFAULT 1,
uom INT DEFAULT 1,
rating TINYINT UNSIGNED DEFAULT 0,
reviews INT UNSIGNED DEFAULT 0,
weight DECIMAL(10,3),
length DECIMAL(10,3),
width DECIMAL(10,3),
height DECIMAL(10,3),
country_of_origin VARCHAR(5),
location VARCHAR(50),
total_sold INT UNSIGNED DEFAULT 0,
baskets INT UNSIGNED DEFAULT 0,
notifies INT UNSIGNED DEFAULT 0,
date_last_sold DATE,
PRIMARY KEY (product_id),
UNIQUE KEY unique_sku (SKU),
INDEX idx_vendor (vendor),
INDEX idx_brand (brand)
INDEX idx_brand (brand),
INDEX idx_location (location),
INDEX idx_total_sold (total_sold),
INDEX idx_date_last_sold (date_last_sold)
) ENGINE=InnoDB;
-- Create categories table first (referenced by product_categories)
-- Create categories table with hierarchy support
CREATE TABLE categories (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
type SMALLINT NOT NULL COMMENT '10=section, 11=category, 12=subcategory, 13=subsubcategory, 1=company, 2=line, 3=subline, 40=artist',
parent_id BIGINT,
description TEXT,
parent_category VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
status VARCHAR(20) DEFAULT 'active',
UNIQUE KEY unique_name (name),
INDEX idx_parent (parent_category),
UNIQUE KEY unique_name_type (name, type),
FOREIGN KEY (parent_id) REFERENCES categories(id),
INDEX idx_parent (parent_id),
INDEX idx_type (type),
INDEX idx_status (status)
) ENGINE=InnoDB;
@@ -68,8 +95,7 @@ CREATE TABLE product_categories (
FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE,
INDEX idx_category (category_id),
INDEX idx_product (product_id),
INDEX idx_product_categories_both (product_id, category_id)
INDEX idx_product (product_id)
) ENGINE=InnoDB;
-- Create orders table with its indexes
@@ -86,6 +112,7 @@ CREATE TABLE orders (
tax_included BOOLEAN DEFAULT false,
shipping DECIMAL(10, 3) DEFAULT 0,
customer VARCHAR(50) NOT NULL,
customer_name VARCHAR(100),
status VARCHAR(20) DEFAULT 'pending',
payment_method VARCHAR(50),
shipping_method VARCHAR(50),
@@ -113,11 +140,12 @@ CREATE TABLE purchase_orders (
product_id BIGINT NOT NULL,
sku VARCHAR(50) NOT NULL,
cost_price DECIMAL(10, 3) NOT NULL,
status VARCHAR(20) DEFAULT 'pending',
status VARCHAR(20) DEFAULT 'pending' COMMENT 'canceled,created,electronically_ready_send,ordered,preordered,electronically_sent,receiving_started,closed',
notes TEXT,
ordered INT NOT NULL,
received INT DEFAULT 0,
received_date DATE,
received_by INT,
FOREIGN KEY (product_id) REFERENCES products(product_id),
FOREIGN KEY (sku) REFERENCES products(SKU),
INDEX idx_po_id (po_id),