mock sync group editing: made tables columns more consistent; initialize database rows upon editing

This commit is contained in:
2026-02-20 23:04:18 -07:00
parent 5ec4fe67b0
commit 4352062227
9 changed files with 479 additions and 232 deletions
@@ -0,0 +1,187 @@
BEGIN;
CREATE TABLE mock.sync_group_editing (
account_id INTEGER PRIMARY KEY REFERENCES mock.accounts ON DELETE CASCADE,
sync_group_id INTEGER NOT NULL REFERENCES mock.sync_groups ON DELETE CASCADE,
UNIQUE (account_id, sync_group_id),
UNIQUE (sync_group_id)
);
CREATE TABLE mock.sync_group_editing_listing_order_indexes (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL CHECK (order_index >= 0),
PRIMARY KEY (account_id, order_index)
);
CREATE TABLE mock.shop_amazon_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_amazon ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_big_cartel_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_big_cartel ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_ebay_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_ebay ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_ecwid_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_ecwid ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_etsy_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_etsy ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_shopify_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_shopify ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_square_online_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_square_online ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_squarespace_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_squarespace ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_tiktok_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_tiktok ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_walmart_marketplace_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_walmart_marketplace ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_wix_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_wix ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_woo_commerce_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_woo_commerce ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
CREATE TABLE mock.shop_zoho_sync_group_editing_listings (
account_id INTEGER NOT NULL REFERENCES mock.sync_group_editing ON DELETE CASCADE,
order_index INTEGER NOT NULL,
shop_id TEXT NOT NULL,
listing_id TEXT,
PRIMARY KEY (account_id, order_index),
UNIQUE (account_id, shop_id),
FOREIGN KEY (account_id, shop_id) REFERENCES mock.shop_zoho ON DELETE CASCADE,
FOREIGN KEY (account_id, order_index) REFERENCES mock.sync_group_editing_listing_order_indexes ON DELETE CASCADE
);
GRANT ALL ON SCHEMA mock TO PUBLIC;
COMMIT;