Import current PCAT application

This commit is contained in:
ZeroIchiro
2026-09-15 10:47:36 +00:00
commit 1b532b937f
18 changed files with 1059 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
CREATE TABLE IF NOT EXISTS admin_users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(80) NOT NULL,
password_hash VARCHAR(255) NOT NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uq_admin_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS authors (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL DEFAULT '',
postal_code VARCHAR(20) NOT NULL DEFAULT '',
city VARCHAR(120) NOT NULL DEFAULT '',
bank_account VARCHAR(255) NOT NULL DEFAULT '',
bic VARCHAR(20) NOT NULL DEFAULT '',
bank_name VARCHAR(255) NOT NULL DEFAULT '',
paypal_address VARCHAR(255) NOT NULL DEFAULT '',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_authors_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS books (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
printing_costs DECIMAL(10,2) NOT NULL DEFAULT 0.00,
selling_price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
ebook_price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
isbn_print VARCHAR(20) NULL,
isbn_ebook VARCHAR(20) NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_books_title (title),
UNIQUE KEY uq_books_isbn_print (isbn_print),
UNIQUE KEY uq_books_isbn_ebook (isbn_ebook)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS book_authors (
book_id INT UNSIGNED NOT NULL,
author_id INT UNSIGNED NOT NULL,
margin_percent DECIMAL(5,2) NOT NULL,
PRIMARY KEY (book_id, author_id),
CONSTRAINT fk_book_authors_book FOREIGN KEY (book_id) REFERENCES books (id) ON DELETE CASCADE,
CONSTRAINT fk_book_authors_author FOREIGN KEY (author_id) REFERENCES authors (id) ON DELETE RESTRICT,
CONSTRAINT chk_book_authors_margin CHECK (margin_percent >= 0 AND margin_percent <= 100)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS book_sales (
book_id INT UNSIGNED NOT NULL,
wholesale_quantity INT UNSIGNED NOT NULL DEFAULT 0,
bookseller_quantity INT UNSIGNED NOT NULL DEFAULT 0,
direct_quantity INT UNSIGNED NOT NULL DEFAULT 0,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (book_id),
CONSTRAINT fk_book_sales_book FOREIGN KEY (book_id) REFERENCES books (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS ebook_sales (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
book_id INT UNSIGNED NOT NULL,
sale_date DATE NOT NULL,
sales_channel VARCHAR(255) NOT NULL,
revenue DECIMAL(12,2) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uq_ebook_sales_book_date_channel (book_id, sale_date, sales_channel),
KEY idx_ebook_sales_date (sale_date),
CONSTRAINT fk_ebook_sales_book FOREIGN KEY (book_id) REFERENCES books (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;