feat(ADM-018): completed feature
This commit is contained in:
52
project/migrations/012_pricing.js
Normal file
52
project/migrations/012_pricing.js
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Pricing variant prices and append-only price history.
|
||||
*/
|
||||
|
||||
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
||||
export const up = (pgm) => {
|
||||
pgm.sql(`
|
||||
CREATE TABLE pricing_variant_prices (
|
||||
variant_id uuid PRIMARY KEY,
|
||||
net_unit_amount_cents integer NOT NULL,
|
||||
vat_rate text NOT NULL,
|
||||
currency text NOT NULL DEFAULT 'EUR',
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now(),
|
||||
CONSTRAINT pricing_variant_prices_amount_non_negative CHECK (net_unit_amount_cents >= 0),
|
||||
CONSTRAINT pricing_variant_prices_vat_rate_check CHECK (vat_rate IN ('general', 'reduced')),
|
||||
CONSTRAINT pricing_variant_prices_currency_check CHECK (currency = 'EUR')
|
||||
)
|
||||
`);
|
||||
|
||||
pgm.sql(`
|
||||
CREATE TABLE pricing_price_history (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
variant_id uuid NOT NULL,
|
||||
previous_net_unit_amount_cents integer,
|
||||
previous_vat_rate text,
|
||||
previous_currency text,
|
||||
new_net_unit_amount_cents integer NOT NULL,
|
||||
new_vat_rate text NOT NULL,
|
||||
new_currency text NOT NULL DEFAULT 'EUR',
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
CONSTRAINT pricing_price_history_previous_amount_non_negative
|
||||
CHECK (previous_net_unit_amount_cents IS NULL OR previous_net_unit_amount_cents >= 0),
|
||||
CONSTRAINT pricing_price_history_new_amount_non_negative CHECK (new_net_unit_amount_cents >= 0),
|
||||
CONSTRAINT pricing_price_history_previous_vat_rate_check
|
||||
CHECK (previous_vat_rate IS NULL OR previous_vat_rate IN ('general', 'reduced')),
|
||||
CONSTRAINT pricing_price_history_new_vat_rate_check CHECK (new_vat_rate IN ('general', 'reduced')),
|
||||
CONSTRAINT pricing_price_history_previous_currency_check
|
||||
CHECK (previous_currency IS NULL OR previous_currency = 'EUR'),
|
||||
CONSTRAINT pricing_price_history_new_currency_check CHECK (new_currency = 'EUR')
|
||||
)
|
||||
`);
|
||||
pgm.sql(
|
||||
'CREATE INDEX pricing_price_history_variant_id_idx ON pricing_price_history (variant_id)',
|
||||
);
|
||||
};
|
||||
|
||||
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
||||
export const down = (pgm) => {
|
||||
pgm.sql('DROP TABLE IF EXISTS pricing_price_history');
|
||||
pgm.sql('DROP TABLE IF EXISTS pricing_variant_prices');
|
||||
};
|
||||
Reference in New Issue
Block a user