Skip to content

Commit 60c9717

Browse files
committed
members: fix discount request migration order
1 parent 3127491 commit 60c9717

2 files changed

Lines changed: 23 additions & 7 deletions

File tree

modules/members/schema.sql

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ CREATE TABLE IF NOT EXISTS members (
6969

7070
CREATE UNIQUE INDEX IF NOT EXISTS members_email_idx ON members (email);
7171

72-
CREATE UNIQUE INDEX IF NOT EXISTS members_discount_request_id_idx ON members (discount_request_id) WHERE discount_request_id IS NOT NULL;
73-
7472
CREATE UNIQUE INDEX IF NOT EXISTS members_fob_idx ON members (fob_id);
7573

7674
CREATE INDEX IF NOT EXISTS members_fob_last_seen_idx ON members (fob_last_seen);
@@ -117,11 +115,6 @@ CREATE TABLE IF NOT EXISTS fob_swipes (
117115

118116
CREATE INDEX IF NOT EXISTS fob_swipes_fob_id_idx ON fob_swipes (fob_id);
119117

120-
CREATE TRIGGER IF NOT EXISTS no_discount_after_cancelation AFTER UPDATE ON members WHEN OLD.payment_status IS NOT NULL AND NEW.payment_status IS NULL
121-
BEGIN
122-
UPDATE members SET discount_type = NULL, discount_status = NULL, discount_request_id = NULL WHERE id = NEW.id;
123-
END;
124-
125118
CREATE TRIGGER IF NOT EXISTS fob_swipe_to_member AFTER INSERT ON fob_swipes
126119
BEGIN
127120
UPDATE members SET fob_last_seen = MAX(COALESCE(fob_last_seen, 0), NEW.timestamp) WHERE fob_id = NEW.fob_id;

modules/members/schema_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,29 @@ func TestDiscountCancelation(t *testing.T) {
327327
assert.Nil(t, requestID)
328328
}
329329

330+
func TestMigrateMembersAddsDiscountRequestIDBeforeDependentObjects(t *testing.T) {
331+
db := NewTestDB(t)
332+
333+
_, err := db.Exec(`DROP TRIGGER no_discount_after_cancelation`)
334+
require.NoError(t, err)
335+
_, err = db.Exec(`DROP INDEX members_discount_request_id_idx`)
336+
require.NoError(t, err)
337+
_, err = db.Exec(`ALTER TABLE members DROP COLUMN discount_request_id`)
338+
require.NoError(t, err)
339+
340+
migrateMembers(db)
341+
342+
_, err = db.Exec(`INSERT INTO members (id, email, confirmed, discount_type, discount_status, discount_request_id, stripe_subscription_state) VALUES (1, 'foo@bar.com', TRUE, 'anything', 'approved', 'lathe-solder-circuit', 'active')`)
343+
require.NoError(t, err)
344+
_, err = db.Exec(`UPDATE members SET stripe_subscription_state = NULL`)
345+
require.NoError(t, err)
346+
347+
var requestID *string
348+
err = db.QueryRow(`SELECT discount_request_id FROM members`).Scan(&requestID)
349+
require.NoError(t, err)
350+
assert.Nil(t, requestID)
351+
}
352+
330353
func eventsToStrings(t *testing.T, db *sql.DB) []string {
331354
results, err := db.Query("SELECT event, details FROM member_events")
332355
require.NoError(t, err)

0 commit comments

Comments
 (0)