-- Gelato / External print


-- modelled after Gelato
ALTER TABLE orders DROP COLUMN IF EXISTS external_order_id;
ALTER TABLE order_rows DROP COLUMN IF EXISTS external_status;
DROP TABLE IF EXISTS external_print_products;
DROP TYPE IF EXISTS  external_status_type;
DROP TYPE IF EXISTS orientation_type;
DROP TYPE IF EXISTS orientation_type;

-- Order
CREATE TYPE external_status_type AS ENUM (
  'N/A',
  'not_created',
  'created',
  'uploading',
  'passed',
  'failed',
  'canceled',
  'printed',
  'shipped',
  'delivered',
  'pending_approval',
  'draft',
  'not_connected'
);

ALTER TABLE orders ADD COLUMN IF NOT EXISTS external_order_id text;

ALTER TABLE order_rows ADD COLUMN IF NOT EXISTS external_status external_status_type NOT NULL DEFAULT 'N/A';


-- External print products
CREATE TYPE orientation_type AS ENUM (
  'landscape',
  'portrait',
  'square'
);


-- product-groups.groupid senare
CREATE TABLE external_print_products (
  id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  orientation orientation_type NOT NULL,
  accessory TEXT NOT NULL,
  width_mm numeric NOT NULL,
  height_mm numeric NOT NULL,
  width_inch numeric NOT NULL,
  height_inch numeric NOT NULL,
  external_product_id TEXT NOT NULL UNIQUE,
  inserted timestamp with time zone DEFAULT now(),
  updated timestamp with time zone,
  price_sek numeric NOT NULL,
  group_id INT,
  CONSTRAINT fk_product_groups
    FOREIGN KEY(group_id)
    REFERENCES "product-groups"(groupid)
);

