@bash-app/bash-common 30.62.0 → 30.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/prisma/migrations/20250127_membershiptier_guest_to_basic/migration.sql +36 -0
- package/prisma/migrations/20250127_privacy_levels/migration.sql +91 -0
- package/prisma/migrations/20250127_promotion_marketing_subtype_add_model/migration.sql +20 -0
- package/prisma/migrations/20250127_voucher_table/migration.sql +68 -0
- package/prisma/schema.prisma +1 -0
package/package.json
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
-- Rename/normalize MembershipTier values: Guest -> Basic
|
|
2
|
+
-- Idempotent: safe to run multiple times
|
|
3
|
+
|
|
4
|
+
-- Add Basic to MembershipTier (if not exists)
|
|
5
|
+
DO $
|
|
6
|
+
$
|
|
7
|
+
BEGIN
|
|
8
|
+
IF NOT EXISTS (
|
|
9
|
+
SELECT 1
|
|
10
|
+
FROM pg_enum
|
|
11
|
+
WHERE enumlabel = 'Basic'
|
|
12
|
+
AND enumtypid = (
|
|
13
|
+
SELECT oid
|
|
14
|
+
FROM pg_type
|
|
15
|
+
WHERE typname = 'MembershipTier'
|
|
16
|
+
)
|
|
17
|
+
) THEN
|
|
18
|
+
ALTER TYPE "MembershipTier"
|
|
19
|
+
ADD VALUE 'Basic';
|
|
20
|
+
END
|
|
21
|
+
IF;
|
|
22
|
+
END $$;
|
|
23
|
+
|
|
24
|
+
-- Update existing Guest values to Basic
|
|
25
|
+
UPDATE "User"
|
|
26
|
+
SET "membershipTier" = 'Basic'
|
|
27
|
+
::"MembershipTier"
|
|
28
|
+
WHERE "membershipTier" = 'Guest'::"MembershipTier";
|
|
29
|
+
|
|
30
|
+
-- Update default value
|
|
31
|
+
ALTER TABLE "User"
|
|
32
|
+
ALTER COLUMN "membershipTier"
|
|
33
|
+
SET
|
|
34
|
+
DEFAULT 'Basic'::"MembershipTier";
|
|
35
|
+
|
|
36
|
+
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
-- Add new Privacy enum values and migrate ConnectionsOnly -> ContactsOnly
|
|
2
|
+
|
|
3
|
+
DO $
|
|
4
|
+
$
|
|
5
|
+
BEGIN
|
|
6
|
+
IF NOT EXISTS (
|
|
7
|
+
SELECT 1
|
|
8
|
+
FROM pg_enum
|
|
9
|
+
WHERE enumlabel = 'ContactsOnly'
|
|
10
|
+
AND enumtypid = (SELECT oid
|
|
11
|
+
FROM pg_type
|
|
12
|
+
WHERE typname = 'Privacy')
|
|
13
|
+
) THEN
|
|
14
|
+
ALTER TYPE "Privacy"
|
|
15
|
+
ADD VALUE 'ContactsOnly';
|
|
16
|
+
END
|
|
17
|
+
IF;
|
|
18
|
+
|
|
19
|
+
IF NOT EXISTS (
|
|
20
|
+
SELECT 1
|
|
21
|
+
FROM pg_enum
|
|
22
|
+
WHERE enumlabel = 'CreatorOnly'
|
|
23
|
+
AND enumtypid = (SELECT oid
|
|
24
|
+
FROM pg_type
|
|
25
|
+
WHERE typname = 'Privacy')
|
|
26
|
+
) THEN
|
|
27
|
+
ALTER TYPE "Privacy"
|
|
28
|
+
ADD VALUE 'CreatorOnly';
|
|
29
|
+
END
|
|
30
|
+
IF;
|
|
31
|
+
|
|
32
|
+
IF NOT EXISTS (
|
|
33
|
+
SELECT 1
|
|
34
|
+
FROM pg_enum
|
|
35
|
+
WHERE enumlabel = 'ProOnly'
|
|
36
|
+
AND enumtypid = (SELECT oid
|
|
37
|
+
FROM pg_type
|
|
38
|
+
WHERE typname = 'Privacy')
|
|
39
|
+
) THEN
|
|
40
|
+
ALTER TYPE "Privacy"
|
|
41
|
+
ADD VALUE 'ProOnly';
|
|
42
|
+
END
|
|
43
|
+
IF;
|
|
44
|
+
|
|
45
|
+
IF NOT EXISTS (
|
|
46
|
+
SELECT 1
|
|
47
|
+
FROM pg_enum
|
|
48
|
+
WHERE enumlabel = 'EliteOnly'
|
|
49
|
+
AND enumtypid = (SELECT oid
|
|
50
|
+
FROM pg_type
|
|
51
|
+
WHERE typname = 'Privacy')
|
|
52
|
+
) THEN
|
|
53
|
+
ALTER TYPE "Privacy"
|
|
54
|
+
ADD VALUE 'EliteOnly';
|
|
55
|
+
END
|
|
56
|
+
IF;
|
|
57
|
+
|
|
58
|
+
IF NOT EXISTS (
|
|
59
|
+
SELECT 1
|
|
60
|
+
FROM pg_enum
|
|
61
|
+
WHERE enumlabel = 'LegendOnly'
|
|
62
|
+
AND enumtypid = (SELECT oid
|
|
63
|
+
FROM pg_type
|
|
64
|
+
WHERE typname = 'Privacy')
|
|
65
|
+
) THEN
|
|
66
|
+
ALTER TYPE "Privacy"
|
|
67
|
+
ADD VALUE 'LegendOnly';
|
|
68
|
+
END
|
|
69
|
+
IF;
|
|
70
|
+
END $$;
|
|
71
|
+
|
|
72
|
+
-- Migrate ConnectionsOnly to ContactsOnly if present
|
|
73
|
+
DO $$
|
|
74
|
+
BEGIN
|
|
75
|
+
IF EXISTS (
|
|
76
|
+
SELECT 1
|
|
77
|
+
FROM pg_enum
|
|
78
|
+
WHERE enumlabel = 'ConnectionsOnly'
|
|
79
|
+
AND enumtypid = (SELECT oid
|
|
80
|
+
FROM pg_type
|
|
81
|
+
WHERE typname = 'Privacy')
|
|
82
|
+
) THEN
|
|
83
|
+
UPDATE "BashEvent"
|
|
84
|
+
SET "privacy" = 'ContactsOnly'
|
|
85
|
+
::"Privacy"
|
|
86
|
+
WHERE "privacy" = 'ConnectionsOnly'::"Privacy";
|
|
87
|
+
END
|
|
88
|
+
IF;
|
|
89
|
+
END $$;
|
|
90
|
+
|
|
91
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- Add 'Model' to PromotionAndMarketingSubType enum
|
|
2
|
+
|
|
3
|
+
DO $
|
|
4
|
+
$
|
|
5
|
+
BEGIN
|
|
6
|
+
IF NOT EXISTS (
|
|
7
|
+
SELECT 1
|
|
8
|
+
FROM pg_enum
|
|
9
|
+
WHERE enumlabel = 'Model'
|
|
10
|
+
AND enumtypid = (SELECT oid
|
|
11
|
+
FROM pg_type
|
|
12
|
+
WHERE typname = 'PromotionAndMarketingSubType')
|
|
13
|
+
) THEN
|
|
14
|
+
ALTER TYPE "PromotionAndMarketingSubType"
|
|
15
|
+
ADD VALUE 'Model';
|
|
16
|
+
END
|
|
17
|
+
IF;
|
|
18
|
+
END $$;
|
|
19
|
+
|
|
20
|
+
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
-- Create VoucherStatus enum and Voucher table
|
|
2
|
+
|
|
3
|
+
DO $
|
|
4
|
+
$
|
|
5
|
+
BEGIN
|
|
6
|
+
IF NOT EXISTS (SELECT 1
|
|
7
|
+
FROM pg_type
|
|
8
|
+
WHERE typname = 'VoucherStatus') THEN
|
|
9
|
+
CREATE TYPE "VoucherStatus" AS ENUM
|
|
10
|
+
('Active', 'Used', 'Cancelled');
|
|
11
|
+
END
|
|
12
|
+
IF;
|
|
13
|
+
END $$;
|
|
14
|
+
|
|
15
|
+
CREATE TABLE
|
|
16
|
+
IF NOT EXISTS "Voucher"
|
|
17
|
+
(
|
|
18
|
+
"id" TEXT NOT NULL,
|
|
19
|
+
"codeHash" TEXT NOT NULL,
|
|
20
|
+
"issuedToEmail" TEXT,
|
|
21
|
+
"shopifyOrderId" TEXT,
|
|
22
|
+
"createdAt" TIMESTAMP
|
|
23
|
+
(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
24
|
+
"redeemedAt" TIMESTAMP
|
|
25
|
+
(3),
|
|
26
|
+
"redeemedById" TEXT,
|
|
27
|
+
"status" "VoucherStatus" NOT NULL DEFAULT 'Active',
|
|
28
|
+
"stripePromotionCodeId" TEXT,
|
|
29
|
+
"stripeCouponId" TEXT,
|
|
30
|
+
CONSTRAINT "Voucher_pkey" PRIMARY KEY
|
|
31
|
+
("id")
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
CREATE UNIQUE INDEX
|
|
35
|
+
IF NOT EXISTS "Voucher_codeHash_key" ON "Voucher"
|
|
36
|
+
("codeHash");
|
|
37
|
+
CREATE INDEX
|
|
38
|
+
IF NOT EXISTS "Voucher_issuedToEmail_idx" ON "Voucher"
|
|
39
|
+
("issuedToEmail");
|
|
40
|
+
CREATE INDEX
|
|
41
|
+
IF NOT EXISTS "Voucher_shopifyOrderId_idx" ON "Voucher"
|
|
42
|
+
("shopifyOrderId");
|
|
43
|
+
CREATE INDEX
|
|
44
|
+
IF NOT EXISTS "Voucher_status_idx" ON "Voucher"
|
|
45
|
+
("status");
|
|
46
|
+
CREATE INDEX
|
|
47
|
+
IF NOT EXISTS "Voucher_createdAt_idx" ON "Voucher"
|
|
48
|
+
("createdAt");
|
|
49
|
+
|
|
50
|
+
DO $$
|
|
51
|
+
BEGIN
|
|
52
|
+
IF NOT EXISTS (
|
|
53
|
+
SELECT 1
|
|
54
|
+
FROM information_schema.table_constraints
|
|
55
|
+
WHERE constraint_name = 'Voucher_redeemedById_fkey'
|
|
56
|
+
AND table_name = 'Voucher'
|
|
57
|
+
) THEN
|
|
58
|
+
ALTER TABLE "Voucher"
|
|
59
|
+
ADD CONSTRAINT "Voucher_redeemedById_fkey"
|
|
60
|
+
FOREIGN KEY ("redeemedById")
|
|
61
|
+
REFERENCES "User"("id")
|
|
62
|
+
ON DELETE SET NULL
|
|
63
|
+
ON UPDATE CASCADE;
|
|
64
|
+
END
|
|
65
|
+
IF;
|
|
66
|
+
END $$;
|
|
67
|
+
|
|
68
|
+
|