feat(ADM-018): completed feature
This commit is contained in:
31
project/migrations/014_promotions.js
Normal file
31
project/migrations/014_promotions.js
Normal file
@@ -0,0 +1,31 @@
|
||||
/** Promotions and selected cart promo code. */
|
||||
|
||||
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
||||
export const up = (pgm) => {
|
||||
pgm.sql(`
|
||||
CREATE TABLE promotions_promotions (
|
||||
code text PRIMARY KEY,
|
||||
type text NOT NULL,
|
||||
value integer NOT NULL,
|
||||
starts_at timestamptz NOT NULL,
|
||||
ends_at timestamptz NOT NULL,
|
||||
usage_limit integer,
|
||||
usage_count integer NOT NULL DEFAULT 0,
|
||||
active boolean NOT NULL DEFAULT true,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now(),
|
||||
CONSTRAINT promotions_type_check CHECK (type IN ('percent', 'fixed_amount')),
|
||||
CONSTRAINT promotions_value_positive CHECK (value > 0),
|
||||
CONSTRAINT promotions_usage_limit_positive CHECK (usage_limit IS NULL OR usage_limit > 0),
|
||||
CONSTRAINT promotions_usage_count_non_negative CHECK (usage_count >= 0),
|
||||
CONSTRAINT promotions_window_check CHECK (ends_at > starts_at)
|
||||
)
|
||||
`);
|
||||
pgm.sql('ALTER TABLE cart_carts ADD COLUMN promo_code text');
|
||||
};
|
||||
|
||||
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
||||
export const down = (pgm) => {
|
||||
pgm.sql('ALTER TABLE cart_carts DROP COLUMN IF EXISTS promo_code');
|
||||
pgm.sql('DROP TABLE IF EXISTS promotions_promotions');
|
||||
};
|
||||
Reference in New Issue
Block a user