Extract API, migrations and portable NAS deployment
This commit is contained in:
commit
673255fa4f
57 files changed
+3799
No files matched your search
@@ -0,0 +1,67 @@
|
||||
CREATE TABLE IF NOT EXISTS sync_state (
|
||||
id TINYINT PRIMARY KEY,
|
||||
sequence BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
next_delivery_number INT UNSIGNED NOT NULL DEFAULT 1001
|
||||
);
|
||||
INSERT IGNORE INTO sync_state(id) VALUES (1);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS customers (
|
||||
id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
name VARCHAR(120) NOT NULL,
|
||||
version INT UNSIGNED NOT NULL DEFAULT 1,
|
||||
created_at VARCHAR(24) NOT NULL,
|
||||
deleted_at VARCHAR(24) NULL
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS customer_addresses (
|
||||
id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
customer_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
label VARCHAR(80) NOT NULL,
|
||||
address VARCHAR(300) NOT NULL,
|
||||
version INT UNSIGNED NOT NULL DEFAULT 1,
|
||||
created_at VARCHAR(24) NOT NULL,
|
||||
deleted_at VARCHAR(24) NULL,
|
||||
UNIQUE KEY address_customer (id, customer_id),
|
||||
FOREIGN KEY (customer_id) REFERENCES customers(id)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS delivery_types (
|
||||
id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
code VARCHAR(20) NOT NULL UNIQUE,
|
||||
name VARCHAR(80) NOT NULL,
|
||||
shipment_unit_hundredths INT UNSIGNED NOT NULL,
|
||||
version INT UNSIGNED NOT NULL DEFAULT 1,
|
||||
created_at VARCHAR(24) NOT NULL,
|
||||
deleted_at VARCHAR(24) NULL
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS deliveries (
|
||||
id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
delivery_number INT UNSIGNED NOT NULL UNIQUE,
|
||||
customer_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
address_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
delivery_type_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
delivery_type_version INT UNSIGNED NOT NULL,
|
||||
shipment_unit_hundredths INT UNSIGNED NOT NULL,
|
||||
unit_price_agorot INT UNSIGNED NOT NULL,
|
||||
total_price_agorot BIGINT UNSIGNED NOT NULL,
|
||||
notes VARCHAR(500) NOT NULL DEFAULT '',
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'created',
|
||||
version INT UNSIGNED NOT NULL DEFAULT 1,
|
||||
created_at VARCHAR(24) NOT NULL,
|
||||
deleted_at VARCHAR(24) NULL,
|
||||
FOREIGN KEY (customer_id) REFERENCES customers(id),
|
||||
FOREIGN KEY (address_id, customer_id) REFERENCES customer_addresses(id, customer_id),
|
||||
FOREIGN KEY (delivery_type_id) REFERENCES delivery_types(id)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS sync_operations (
|
||||
operation_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
device_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
request_hash CHAR(64) NOT NULL,
|
||||
result_json JSON NOT NULL,
|
||||
created_at VARCHAR(24) NOT NULL
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS sync_changes (
|
||||
sequence BIGINT UNSIGNED PRIMARY KEY,
|
||||
entity_type VARCHAR(20) NOT NULL,
|
||||
entity_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
change_json JSON NOT NULL,
|
||||
INDEX entity_lookup (entity_type, entity_id, sequence)
|
||||
);
|
||||
@@ -0,0 +1,21 @@
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS updated_at VARCHAR(24) NULL;
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS cancelled_at VARCHAR(24) NULL;
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS cancellation_reason VARCHAR(300) NULL;
|
||||
CREATE TABLE IF NOT EXISTS app_users (
|
||||
id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
username VARCHAR(80) CHARACTER SET ascii COLLATE ascii_bin NOT NULL UNIQUE,
|
||||
display_name VARCHAR(80) NOT NULL,
|
||||
password_hash VARCHAR(256) NOT NULL,
|
||||
role VARCHAR(20) NOT NULL DEFAULT 'staff',
|
||||
active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at VARCHAR(24) NOT NULL
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS auth_sessions (
|
||||
token_hash CHAR(64) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
user_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
expires_at DATETIME(3) NOT NULL,
|
||||
FOREIGN KEY (user_id) REFERENCES app_users(id),
|
||||
INDEX sessions_user (user_id),
|
||||
INDEX sessions_expiry (expires_at)
|
||||
);
|
||||
ALTER TABLE sync_operations ADD COLUMN IF NOT EXISTS actor_user_id CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NULL;
|
||||
@@ -0,0 +1,19 @@
|
||||
ALTER TABLE app_users MODIFY COLUMN password_hash VARCHAR(256) NULL;
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS oidc_identity_hash CHAR(64) CHARACTER SET ascii COLLATE ascii_bin NULL;
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS oidc_issuer VARCHAR(512) NULL;
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS oidc_subject VARCHAR(255) NULL;
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS username_display VARCHAR(255) NULL;
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS users_oidc_identity ON app_users(oidc_identity_hash);
|
||||
ALTER TABLE auth_sessions ADD COLUMN IF NOT EXISTS auth_provider VARCHAR(10) NOT NULL DEFAULT 'local';
|
||||
ALTER TABLE auth_sessions ADD COLUMN IF NOT EXISTS encrypted_tokens TEXT NULL;
|
||||
CREATE TABLE IF NOT EXISTS oidc_settings (
|
||||
id TINYINT PRIMARY KEY,
|
||||
encrypted_config TEXT NOT NULL,
|
||||
updated_by CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
updated_at VARCHAR(24) NOT NULL
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS oidc_transactions (
|
||||
token_hash CHAR(64) CHARACTER SET ascii COLLATE ascii_bin PRIMARY KEY,
|
||||
encrypted_data TEXT NOT NULL,
|
||||
expires_at DATETIME(3) NOT NULL
|
||||
);
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS display_name_override VARCHAR(80) NULL;
|
||||
@@ -0,0 +1,11 @@
|
||||
CREATE TABLE IF NOT EXISTS directory_settings (
|
||||
id TINYINT PRIMARY KEY,
|
||||
config_id CHAR(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
enabled BOOLEAN NOT NULL,
|
||||
issuer VARCHAR(512) NOT NULL,
|
||||
encrypted_config MEDIUMTEXT NOT NULL,
|
||||
updated_by CHAR(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
|
||||
updated_at VARCHAR(24) NOT NULL
|
||||
);
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS directory_display_name VARCHAR(80) NULL;
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS directory_config_id CHAR(64) CHARACTER SET ascii COLLATE ascii_bin NULL;
|
||||
@@ -0,0 +1,13 @@
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS contact_name VARCHAR(100) NOT NULL DEFAULT '';
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS phone VARCHAR(30) NOT NULL DEFAULT '';
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS comments VARCHAR(1000) NOT NULL DEFAULT '';
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS morning_start CHAR(5) NULL;
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS morning_end CHAR(5) NULL;
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS afternoon_start CHAR(5) NULL;
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS afternoon_end CHAR(5) NULL;
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS late_night_start CHAR(5) NULL;
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS late_night_end CHAR(5) NULL;
|
||||
ALTER TABLE customers ADD COLUMN IF NOT EXISTS updated_at VARCHAR(24) NULL;
|
||||
ALTER TABLE customer_addresses ADD COLUMN IF NOT EXISTS city VARCHAR(100) NOT NULL DEFAULT '';
|
||||
ALTER TABLE customer_addresses ADD COLUMN IF NOT EXISTS street VARCHAR(120) NOT NULL DEFAULT '';
|
||||
ALTER TABLE customer_addresses ADD COLUMN IF NOT EXISTS building_number VARCHAR(20) NOT NULL DEFAULT '';
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS scheduled_date DATE NULL AFTER address_id;
|
||||
UPDATE deliveries SET scheduled_date = DATE(LEFT(created_at, 10)) WHERE scheduled_date IS NULL;
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE app_users ADD COLUMN IF NOT EXISTS oidc_groups_json JSON NULL;
|
||||
UPDATE app_users SET oidc_groups_json = JSON_ARRAY() WHERE oidc_identity_hash IS NOT NULL AND oidc_groups_json IS NULL;
|
||||
@@ -0,0 +1,4 @@
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS delivery_slot VARCHAR(20) NULL AFTER scheduled_date;
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS specific_time CHAR(5) NULL AFTER delivery_slot;
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS delivery_window_start CHAR(5) NULL AFTER specific_time;
|
||||
ALTER TABLE deliveries ADD COLUMN IF NOT EXISTS delivery_window_end CHAR(5) NULL AFTER delivery_window_start;
|
||||
Reference in new issue
Block a user