@bash-app/bash-common 30.154.0 → 30.157.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.
Files changed (37) hide show
  1. package/dist/definitions.d.ts +19 -8
  2. package/dist/definitions.d.ts.map +1 -1
  3. package/dist/definitions.js +2 -20
  4. package/dist/definitions.js.map +1 -1
  5. package/dist/extendedSchemas.d.ts +2 -2
  6. package/dist/extendedSchemas.d.ts.map +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +0 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/membershipDefinitions.d.ts +7 -12
  11. package/dist/membershipDefinitions.d.ts.map +1 -1
  12. package/dist/membershipDefinitions.js.map +1 -1
  13. package/dist/utils/index.d.ts.map +1 -1
  14. package/dist/utils/index.js +0 -1
  15. package/dist/utils/index.js.map +1 -1
  16. package/dist/utils/luxonUtils.d.ts.map +1 -1
  17. package/dist/utils/luxonUtils.js +1 -73
  18. package/dist/utils/luxonUtils.js.map +1 -1
  19. package/dist/utils/service/serviceDBUtils.d.ts +2 -0
  20. package/dist/utils/service/serviceDBUtils.d.ts.map +1 -1
  21. package/dist/utils/service/serviceDBUtils.js +2 -41
  22. package/dist/utils/service/serviceDBUtils.js.map +1 -1
  23. package/package.json +1 -1
  24. package/prisma/migrations/add_bash_availability.sql +53 -0
  25. package/prisma/migrations/add_groups_and_momentum.sql +135 -0
  26. package/prisma/migrations/add_groups_momentum_phase0_4.sql +200 -0
  27. package/prisma/migrations/add_new_feature_tables.sql +140 -0
  28. package/prisma/migrations/add_tier_privacy_and_fee_handling.sql +29 -0
  29. package/prisma/schema.prisma +242 -0
  30. package/src/definitions.ts +25 -73
  31. package/src/extendedSchemas.ts +2 -2
  32. package/src/index.ts +0 -1
  33. package/src/membershipDefinitions.ts +8 -14
  34. package/src/utils/index.ts +0 -1
  35. package/src/utils/luxonUtils.ts +1 -111
  36. package/src/utils/service/serviceDBUtils.ts +2 -41
  37. package/src/utils/service/serviceRateDBUtils.ts +0 -179
@@ -0,0 +1,200 @@
1
+ -- Migration: Groups, Momentum Dashboard, and Promoter Leaderboard fields
2
+ -- Covers: Phase 0 (BashEventPageView), Phase 1 (EventGroup, GroupMember),
3
+ -- Phase 1.5 (topPromoterPrize, promoterLeaderboardIsPublic),
4
+ -- Phase 4 (GroupUnlockOffer, GroupUnlock)
5
+ -- Idempotent — safe to run multiple times.
6
+
7
+ DO $$ BEGIN
8
+
9
+ -- ─── Phase 0: Momentum Dashboard ──────────────────────────────────────────
10
+
11
+ -- BashEventPageView table
12
+ IF NOT EXISTS (
13
+ SELECT 1 FROM information_schema.tables
14
+ WHERE table_name = 'BashEventPageView'
15
+ ) THEN
16
+ CREATE TABLE "BashEventPageView" (
17
+ "id" TEXT NOT NULL DEFAULT gen_random_uuid()::text,
18
+ "bashEventId" TEXT NOT NULL,
19
+ "sessionHash" TEXT NOT NULL,
20
+ "viewedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
21
+ CONSTRAINT "BashEventPageView_pkey" PRIMARY KEY ("id"),
22
+ CONSTRAINT "BashEventPageView_bashEventId_fkey"
23
+ FOREIGN KEY ("bashEventId") REFERENCES "BashEvent"("id") ON DELETE CASCADE
24
+ );
25
+ CREATE INDEX "BashEventPageView_bashEventId_viewedAt_idx"
26
+ ON "BashEventPageView"("bashEventId", "viewedAt");
27
+ RAISE NOTICE 'Created BashEventPageView table';
28
+ ELSE
29
+ RAISE NOTICE 'Table BashEventPageView already exists — skipping';
30
+ END IF;
31
+
32
+ -- ─── Phase 1: Bash Groups ─────────────────────────────────────────────────
33
+
34
+ -- GroupVisibility enum
35
+ IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'GroupVisibility') THEN
36
+ CREATE TYPE "GroupVisibility" AS ENUM ('Private', 'OpenLink');
37
+ RAISE NOTICE 'Created GroupVisibility enum';
38
+ ELSE
39
+ RAISE NOTICE 'Enum GroupVisibility already exists — skipping';
40
+ END IF;
41
+
42
+ -- GroupMemberStatus enum
43
+ IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'GroupMemberStatus') THEN
44
+ CREATE TYPE "GroupMemberStatus" AS ENUM ('Going', 'WantsToGo', 'Invited');
45
+ RAISE NOTICE 'Created GroupMemberStatus enum';
46
+ ELSE
47
+ RAISE NOTICE 'Enum GroupMemberStatus already exists — skipping';
48
+ END IF;
49
+
50
+ -- EventGroup table
51
+ IF NOT EXISTS (
52
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'EventGroup'
53
+ ) THEN
54
+ CREATE TABLE "EventGroup" (
55
+ "id" TEXT NOT NULL DEFAULT gen_random_uuid()::text,
56
+ "bashEventId" TEXT NOT NULL,
57
+ "ownerId" TEXT NOT NULL,
58
+ "name" TEXT,
59
+ "maxMembers" INTEGER,
60
+ "visibility" "GroupVisibility" NOT NULL DEFAULT 'Private',
61
+ "promoterId" TEXT,
62
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
63
+ "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
64
+ CONSTRAINT "EventGroup_pkey" PRIMARY KEY ("id"),
65
+ CONSTRAINT "EventGroup_bashEventId_ownerId_key" UNIQUE ("bashEventId", "ownerId"),
66
+ CONSTRAINT "EventGroup_bashEventId_fkey"
67
+ FOREIGN KEY ("bashEventId") REFERENCES "BashEvent"("id") ON DELETE CASCADE,
68
+ CONSTRAINT "EventGroup_ownerId_fkey"
69
+ FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE
70
+ );
71
+ CREATE INDEX "EventGroup_bashEventId_idx" ON "EventGroup"("bashEventId");
72
+ CREATE INDEX "EventGroup_ownerId_idx" ON "EventGroup"("ownerId");
73
+ RAISE NOTICE 'Created EventGroup table';
74
+ ELSE
75
+ RAISE NOTICE 'Table EventGroup already exists — skipping';
76
+ END IF;
77
+
78
+ -- GroupMember table
79
+ IF NOT EXISTS (
80
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'GroupMember'
81
+ ) THEN
82
+ CREATE TABLE "GroupMember" (
83
+ "id" TEXT NOT NULL DEFAULT gen_random_uuid()::text,
84
+ "groupId" TEXT NOT NULL,
85
+ "userId" TEXT NOT NULL,
86
+ "status" "GroupMemberStatus" NOT NULL DEFAULT 'Invited',
87
+ "ticketId" TEXT,
88
+ "joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
89
+ CONSTRAINT "GroupMember_pkey" PRIMARY KEY ("id"),
90
+ CONSTRAINT "GroupMember_groupId_userId_key" UNIQUE ("groupId", "userId"),
91
+ CONSTRAINT "GroupMember_groupId_fkey"
92
+ FOREIGN KEY ("groupId") REFERENCES "EventGroup"("id") ON DELETE CASCADE,
93
+ CONSTRAINT "GroupMember_userId_fkey"
94
+ FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE
95
+ );
96
+ CREATE INDEX "GroupMember_groupId_idx" ON "GroupMember"("groupId");
97
+ CREATE INDEX "GroupMember_userId_idx" ON "GroupMember"("userId");
98
+ RAISE NOTICE 'Created GroupMember table';
99
+ ELSE
100
+ RAISE NOTICE 'Table GroupMember already exists — skipping';
101
+ END IF;
102
+
103
+ -- ─── Phase 1.5: Promoter Leaderboard fields ───────────────────────────────
104
+
105
+ IF NOT EXISTS (
106
+ SELECT 1 FROM information_schema.columns
107
+ WHERE table_name = 'BashEvent' AND column_name = 'topPromoterPrize'
108
+ ) THEN
109
+ ALTER TABLE "BashEvent" ADD COLUMN "topPromoterPrize" TEXT;
110
+ RAISE NOTICE 'Added topPromoterPrize to BashEvent';
111
+ ELSE
112
+ RAISE NOTICE 'Column BashEvent.topPromoterPrize already exists — skipping';
113
+ END IF;
114
+
115
+ IF NOT EXISTS (
116
+ SELECT 1 FROM information_schema.columns
117
+ WHERE table_name = 'BashEvent' AND column_name = 'promoterLeaderboardIsPublic'
118
+ ) THEN
119
+ ALTER TABLE "BashEvent"
120
+ ADD COLUMN "promoterLeaderboardIsPublic" BOOLEAN NOT NULL DEFAULT false;
121
+ RAISE NOTICE 'Added promoterLeaderboardIsPublic to BashEvent';
122
+ ELSE
123
+ RAISE NOTICE 'Column BashEvent.promoterLeaderboardIsPublic already exists — skipping';
124
+ END IF;
125
+
126
+ -- ─── Phase 3: New notification types ─────────────────────────────────────
127
+
128
+ -- Add new values to NotificationType enum if they don't exist
129
+ DO $inner$
130
+ DECLARE
131
+ new_types TEXT[] := ARRAY[
132
+ 'GroupMemberPurchased', 'GroupEveryoneConfirmed', 'GroupEveryonePurchased',
133
+ 'GroupMemberJoined', 'FriendsAttending', 'GroupRewardProgress',
134
+ 'GroupUnlockOfferReceived', 'HostSalesAccelerating', 'HostTopPromoter',
135
+ 'HostSalesSlowing'
136
+ ];
137
+ t TEXT;
138
+ BEGIN
139
+ FOREACH t IN ARRAY new_types LOOP
140
+ IF NOT EXISTS (
141
+ SELECT 1 FROM pg_enum
142
+ WHERE enumlabel = t
143
+ AND enumtypid = (SELECT oid FROM pg_type WHERE typname = 'NotificationType')
144
+ ) THEN
145
+ EXECUTE format('ALTER TYPE "NotificationType" ADD VALUE %L', t);
146
+ RAISE NOTICE 'Added NotificationType value: %', t;
147
+ END IF;
148
+ END LOOP;
149
+ END $inner$;
150
+
151
+ -- ─── Phase 4: Group Unlock Offers ─────────────────────────────────────────
152
+
153
+ -- GroupUnlockOffer table
154
+ IF NOT EXISTS (
155
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'GroupUnlockOffer'
156
+ ) THEN
157
+ CREATE TABLE "GroupUnlockOffer" (
158
+ "id" TEXT NOT NULL DEFAULT gen_random_uuid()::text,
159
+ "bashEventId" TEXT NOT NULL,
160
+ "ticketTierId" TEXT,
161
+ "minGroupSize" INTEGER NOT NULL,
162
+ "rewardLabel" TEXT NOT NULL,
163
+ "rewardType" TEXT NOT NULL,
164
+ "expiresAt" TIMESTAMP(3) NOT NULL,
165
+ "maxGroups" INTEGER,
166
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
167
+ CONSTRAINT "GroupUnlockOffer_pkey" PRIMARY KEY ("id"),
168
+ CONSTRAINT "GroupUnlockOffer_bashEventId_fkey"
169
+ FOREIGN KEY ("bashEventId") REFERENCES "BashEvent"("id") ON DELETE CASCADE
170
+ );
171
+ CREATE INDEX "GroupUnlockOffer_bashEventId_idx" ON "GroupUnlockOffer"("bashEventId");
172
+ CREATE INDEX "GroupUnlockOffer_expiresAt_idx" ON "GroupUnlockOffer"("expiresAt");
173
+ RAISE NOTICE 'Created GroupUnlockOffer table';
174
+ ELSE
175
+ RAISE NOTICE 'Table GroupUnlockOffer already exists — skipping';
176
+ END IF;
177
+
178
+ -- GroupUnlock table
179
+ IF NOT EXISTS (
180
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'GroupUnlock'
181
+ ) THEN
182
+ CREATE TABLE "GroupUnlock" (
183
+ "id" TEXT NOT NULL DEFAULT gen_random_uuid()::text,
184
+ "offerId" TEXT NOT NULL,
185
+ "groupId" TEXT NOT NULL,
186
+ "unlockedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
187
+ CONSTRAINT "GroupUnlock_pkey" PRIMARY KEY ("id"),
188
+ CONSTRAINT "GroupUnlock_offerId_groupId_key" UNIQUE ("offerId", "groupId"),
189
+ CONSTRAINT "GroupUnlock_offerId_fkey"
190
+ FOREIGN KEY ("offerId") REFERENCES "GroupUnlockOffer"("id") ON DELETE CASCADE,
191
+ CONSTRAINT "GroupUnlock_groupId_fkey"
192
+ FOREIGN KEY ("groupId") REFERENCES "EventGroup"("id") ON DELETE CASCADE
193
+ );
194
+ CREATE INDEX "GroupUnlock_groupId_idx" ON "GroupUnlock"("groupId");
195
+ RAISE NOTICE 'Created GroupUnlock table';
196
+ ELSE
197
+ RAISE NOTICE 'Table GroupUnlock already exists — skipping';
198
+ END IF;
199
+
200
+ END $$;
@@ -0,0 +1,140 @@
1
+ -- Migration: Add all new feature tables missing from production/QA
2
+ -- Tables: EventReferralReward, EventReferral, BashList, UserItinerary, UserItineraryItem
3
+ -- All blocks are idempotent (IF NOT EXISTS) so safe to run multiple times.
4
+
5
+ DO $$ BEGIN
6
+
7
+ -- ── 1. EventReferralReward ───────────────────────────────────────────────────
8
+ IF NOT EXISTS (
9
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'EventReferralReward'
10
+ ) THEN
11
+ CREATE TABLE "EventReferralReward" (
12
+ "id" TEXT NOT NULL,
13
+ "bashEventId" TEXT NOT NULL,
14
+ "referralCount" INTEGER NOT NULL,
15
+ "rewardType" TEXT NOT NULL,
16
+ "rewardLabel" TEXT NOT NULL,
17
+ "bashPointsAmount" INTEGER,
18
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
19
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
20
+ "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
21
+
22
+ CONSTRAINT "EventReferralReward_pkey" PRIMARY KEY ("id"),
23
+ CONSTRAINT "EventReferralReward_bashEventId_fkey"
24
+ FOREIGN KEY ("bashEventId") REFERENCES "BashEvent"("id") ON DELETE CASCADE
25
+ );
26
+ CREATE INDEX "EventReferralReward_bashEventId_idx"
27
+ ON "EventReferralReward" ("bashEventId");
28
+ RAISE NOTICE 'Created table EventReferralReward';
29
+ ELSE
30
+ RAISE NOTICE 'Table EventReferralReward already exists — skipping';
31
+ END IF;
32
+
33
+ -- ── 2. EventReferral ────────────────────────────────────────────────────────
34
+ IF NOT EXISTS (
35
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'EventReferral'
36
+ ) THEN
37
+ CREATE TABLE "EventReferral" (
38
+ "id" TEXT NOT NULL,
39
+ "bashEventId" TEXT NOT NULL,
40
+ "referrerId" TEXT NOT NULL,
41
+ "referredUserId" TEXT NOT NULL,
42
+ "ticketId" TEXT,
43
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
44
+
45
+ CONSTRAINT "EventReferral_pkey" PRIMARY KEY ("id"),
46
+ CONSTRAINT "EventReferral_ticketId_key" UNIQUE ("ticketId"),
47
+ CONSTRAINT "EventReferral_unique_triplet" UNIQUE ("bashEventId", "referrerId", "referredUserId"),
48
+ CONSTRAINT "EventReferral_bashEventId_fkey"
49
+ FOREIGN KEY ("bashEventId") REFERENCES "BashEvent"("id") ON DELETE CASCADE,
50
+ CONSTRAINT "EventReferral_referrerId_fkey"
51
+ FOREIGN KEY ("referrerId") REFERENCES "User"("id") ON DELETE CASCADE,
52
+ CONSTRAINT "EventReferral_referredUserId_fkey"
53
+ FOREIGN KEY ("referredUserId") REFERENCES "User"("id") ON DELETE CASCADE,
54
+ CONSTRAINT "EventReferral_ticketId_fkey"
55
+ FOREIGN KEY ("ticketId") REFERENCES "Ticket"("id") ON DELETE SET NULL
56
+ );
57
+ CREATE INDEX "EventReferral_bashEventId_idx" ON "EventReferral" ("bashEventId");
58
+ CREATE INDEX "EventReferral_referrerId_idx" ON "EventReferral" ("referrerId");
59
+ RAISE NOTICE 'Created table EventReferral';
60
+ ELSE
61
+ RAISE NOTICE 'Table EventReferral already exists — skipping';
62
+ END IF;
63
+
64
+ -- ── 3. BashList ─────────────────────────────────────────────────────────────
65
+ IF NOT EXISTS (
66
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'BashList'
67
+ ) THEN
68
+ CREATE TABLE "BashList" (
69
+ "id" TEXT NOT NULL,
70
+ "title" TEXT NOT NULL,
71
+ "slug" TEXT NOT NULL,
72
+ "description" TEXT,
73
+ "filterConfig" JSONB NOT NULL,
74
+ "isFeatured" BOOLEAN NOT NULL DEFAULT FALSE,
75
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
76
+ "createdById" TEXT NOT NULL,
77
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
78
+ "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
79
+
80
+ CONSTRAINT "BashList_pkey" PRIMARY KEY ("id"),
81
+ CONSTRAINT "BashList_slug_key" UNIQUE ("slug"),
82
+ CONSTRAINT "BashList_createdById_fkey"
83
+ FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE CASCADE
84
+ );
85
+ CREATE INDEX "BashList_isFeatured_sortOrder_idx" ON "BashList" ("isFeatured", "sortOrder");
86
+ CREATE INDEX "BashList_slug_idx" ON "BashList" ("slug");
87
+ RAISE NOTICE 'Created table BashList';
88
+ ELSE
89
+ RAISE NOTICE 'Table BashList already exists — skipping';
90
+ END IF;
91
+
92
+ -- ── 4. UserItinerary ────────────────────────────────────────────────────────
93
+ IF NOT EXISTS (
94
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'UserItinerary'
95
+ ) THEN
96
+ CREATE TABLE "UserItinerary" (
97
+ "id" TEXT NOT NULL,
98
+ "userId" TEXT NOT NULL,
99
+ "date" DATE NOT NULL,
100
+ "title" TEXT,
101
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
102
+ "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
103
+
104
+ CONSTRAINT "UserItinerary_pkey" PRIMARY KEY ("id"),
105
+ CONSTRAINT "UserItinerary_userId_date_key" UNIQUE ("userId", "date"),
106
+ CONSTRAINT "UserItinerary_userId_fkey"
107
+ FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE
108
+ );
109
+ CREATE INDEX "UserItinerary_userId_idx" ON "UserItinerary" ("userId");
110
+ RAISE NOTICE 'Created table UserItinerary';
111
+ ELSE
112
+ RAISE NOTICE 'Table UserItinerary already exists — skipping';
113
+ END IF;
114
+
115
+ -- ── 5. UserItineraryItem ────────────────────────────────────────────────────
116
+ IF NOT EXISTS (
117
+ SELECT 1 FROM information_schema.tables WHERE table_name = 'UserItineraryItem'
118
+ ) THEN
119
+ CREATE TABLE "UserItineraryItem" (
120
+ "id" TEXT NOT NULL,
121
+ "userItineraryId" TEXT NOT NULL,
122
+ "bashEventId" TEXT NOT NULL,
123
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
124
+ "notes" TEXT,
125
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT NOW(),
126
+
127
+ CONSTRAINT "UserItineraryItem_pkey" PRIMARY KEY ("id"),
128
+ CONSTRAINT "UserItineraryItem_itinerary_event_key" UNIQUE ("userItineraryId", "bashEventId"),
129
+ CONSTRAINT "UserItineraryItem_userItineraryId_fkey"
130
+ FOREIGN KEY ("userItineraryId") REFERENCES "UserItinerary"("id") ON DELETE CASCADE,
131
+ CONSTRAINT "UserItineraryItem_bashEventId_fkey"
132
+ FOREIGN KEY ("bashEventId") REFERENCES "BashEvent"("id") ON DELETE CASCADE
133
+ );
134
+ CREATE INDEX "UserItineraryItem_userItineraryId_idx" ON "UserItineraryItem" ("userItineraryId");
135
+ RAISE NOTICE 'Created table UserItineraryItem';
136
+ ELSE
137
+ RAISE NOTICE 'Table UserItineraryItem already exists — skipping';
138
+ END IF;
139
+
140
+ END $$;
@@ -0,0 +1,29 @@
1
+ -- Migration: Add tierPrivacy to TicketTier, feeHandling to BashEvent
2
+ -- Required for invite-only tiers and fee handling options.
3
+ -- Idempotent — safe to run multiple times.
4
+
5
+ DO $$ BEGIN
6
+
7
+ -- 1. Add tierPrivacy to TicketTier
8
+ IF NOT EXISTS (
9
+ SELECT 1 FROM information_schema.columns
10
+ WHERE table_name = 'TicketTier' AND column_name = 'tierPrivacy'
11
+ ) THEN
12
+ ALTER TABLE "TicketTier" ADD COLUMN "tierPrivacy" TEXT NOT NULL DEFAULT 'Public';
13
+ RAISE NOTICE 'Added tierPrivacy to TicketTier';
14
+ ELSE
15
+ RAISE NOTICE 'Column TicketTier.tierPrivacy already exists — skipping';
16
+ END IF;
17
+
18
+ -- 2. Add feeHandling to BashEvent
19
+ IF NOT EXISTS (
20
+ SELECT 1 FROM information_schema.columns
21
+ WHERE table_name = 'BashEvent' AND column_name = 'feeHandling'
22
+ ) THEN
23
+ ALTER TABLE "BashEvent" ADD COLUMN "feeHandling" TEXT NOT NULL DEFAULT 'GuestPays';
24
+ RAISE NOTICE 'Added feeHandling to BashEvent';
25
+ ELSE
26
+ RAISE NOTICE 'Column BashEvent.feeHandling already exists — skipping';
27
+ END IF;
28
+
29
+ END $$;