feat(t245): use ERP images as procurement references
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
-- +goose Up
|
||||
CREATE TABLE procurement_reference_sources (
|
||||
procurement_request_id TEXT PRIMARY KEY NOT NULL
|
||||
REFERENCES procurement_requests(id)
|
||||
ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||
origin TEXT NOT NULL
|
||||
CHECK (origin IN ('ERP_FREIGHT_IMAGE', 'MANUAL_UPLOAD')),
|
||||
product_thumb_ref TEXT
|
||||
CHECK (
|
||||
product_thumb_ref IS NULL
|
||||
OR (
|
||||
product_thumb_ref GLOB '[1-9]*'
|
||||
AND product_thumb_ref NOT GLOB '*[^0-9]*'
|
||||
AND length(product_thumb_ref) <= 20
|
||||
)
|
||||
),
|
||||
source_image_sha256 TEXT
|
||||
CHECK (
|
||||
source_image_sha256 IS NULL
|
||||
OR (
|
||||
length(source_image_sha256) = 64
|
||||
AND source_image_sha256 NOT GLOB '*[^0-9a-f]*'
|
||||
)
|
||||
),
|
||||
bound_at TEXT NOT NULL,
|
||||
CHECK (
|
||||
(origin = 'ERP_FREIGHT_IMAGE'
|
||||
AND product_thumb_ref IS NOT NULL
|
||||
AND source_image_sha256 IS NOT NULL)
|
||||
OR (origin = 'MANUAL_UPLOAD'
|
||||
AND product_thumb_ref IS NULL
|
||||
AND source_image_sha256 IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
INSERT INTO procurement_reference_sources (
|
||||
procurement_request_id, origin, product_thumb_ref,
|
||||
source_image_sha256, bound_at
|
||||
)
|
||||
SELECT id, 'MANUAL_UPLOAD', NULL, NULL, updated_at
|
||||
FROM procurement_requests
|
||||
WHERE reference_asset_id IS NOT NULL;
|
||||
|
||||
CREATE INDEX procurement_reference_sources_origin_idx
|
||||
ON procurement_reference_sources (origin, bound_at, procurement_request_id);
|
||||
|
||||
-- +goose Down
|
||||
CREATE TEMP TABLE procurement_reference_sources_v17_down_guard (
|
||||
allowed INTEGER NOT NULL CHECK (allowed = 1)
|
||||
);
|
||||
|
||||
INSERT INTO procurement_reference_sources_v17_down_guard (allowed)
|
||||
SELECT CASE
|
||||
WHEN EXISTS (SELECT 1 FROM procurement_reference_sources)
|
||||
THEN 0
|
||||
ELSE 1
|
||||
END;
|
||||
|
||||
DROP TABLE procurement_reference_sources_v17_down_guard;
|
||||
DROP INDEX procurement_reference_sources_origin_idx;
|
||||
DROP TABLE procurement_reference_sources;
|
||||
Reference in New Issue
Block a user