Skip to content

Commit eccc4d0

Browse files
committed
Unify triggers to check for method support
1 parent 3c9e90b commit eccc4d0

File tree

1 file changed

+37
-48
lines changed

1 file changed

+37
-48
lines changed

prisma/migrations/20250502042253_wallet_v2/migration.sql

Lines changed: 37 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -356,105 +356,94 @@ ALTER TABLE "UserWallet" ADD CONSTRAINT "UserWallet_userId_fkey" FOREIGN KEY ("u
356356
-- AddForeignKey
357357
ALTER TABLE "UserWallet" ADD CONSTRAINT "UserWallet_walletId_fkey" FOREIGN KEY ("walletId") REFERENCES "WalletV2"("id") ON DELETE CASCADE ON UPDATE CASCADE;
358358

359-
CREATE OR REPLACE FUNCTION wallet_check_send_method()
359+
CREATE OR REPLACE FUNCTION wallet_check_support()
360360
RETURNS TRIGGER AS $$
361361
DECLARE
362362
wallet "WalletV2";
363+
method_type TEXT;
363364
BEGIN
364-
SELECT w.* INTO wallet
365-
FROM "UserWallet" uw
366-
JOIN "WalletV2" w ON uw."walletId" = w.id
367-
WHERE uw.id = NEW."walletId";
368-
369-
IF NOT NEW."type"::"WalletSendMethod" = ANY(wallet."sendMethods") THEN
370-
RAISE EXCEPTION 'Wallet % does not support send method %', wallet.name, NEW."type";
371-
END IF;
372-
373-
RETURN NEW;
374-
END;
375-
$$ LANGUAGE plpgsql;
365+
method_type := TG_ARGV[0];
376366

377-
CREATE OR REPLACE FUNCTION wallet_check_recv_method()
378-
RETURNS TRIGGER AS $$
379-
DECLARE
380-
wallet "WalletV2";
381-
BEGIN
382367
SELECT w.* INTO wallet
383368
FROM "UserWallet" uw
384369
JOIN "WalletV2" w ON uw."walletId" = w.id
385370
WHERE uw.id = NEW."walletId";
386371

387-
IF NOT NEW."type"::"WalletRecvMethod" = ANY(wallet."recvMethods") THEN
388-
RAISE EXCEPTION 'Wallet % does not support receive method %', wallet.name, NEW."type";
372+
IF method_type = 'SEND' THEN
373+
IF NOT NEW."type"::"WalletSendMethod" = ANY(wallet."sendMethods") THEN
374+
RAISE EXCEPTION 'Wallet % does not support send method %', wallet.name, NEW."type";
375+
END IF;
376+
ELSIF method_type = 'RECEIVE' THEN
377+
IF NOT NEW."type"::"WalletRecvMethod" = ANY(wallet."recvMethods") THEN
378+
RAISE EXCEPTION 'Wallet % does not support receive method %', wallet.name, NEW."type";
379+
END IF;
389380
END IF;
390381

391382
RETURN NEW;
392383
END;
393384
$$ LANGUAGE plpgsql;
394385

395-
-- Create triggers for each WalletSend table
396-
CREATE TRIGGER wallet_check_send_method
386+
CREATE TRIGGER wallet_check_support
397387
BEFORE INSERT OR UPDATE ON "WalletSendNWC"
398388
FOR EACH ROW
399-
EXECUTE FUNCTION wallet_check_send_method();
389+
EXECUTE FUNCTION wallet_check_support('SEND');
400390

401-
CREATE TRIGGER wallet_check_send_method
391+
CREATE TRIGGER wallet_check_support
402392
BEFORE INSERT OR UPDATE ON "WalletSendLNbits"
403393
FOR EACH ROW
404-
EXECUTE FUNCTION wallet_check_send_method();
394+
EXECUTE FUNCTION wallet_check_support('SEND');
405395

406-
CREATE TRIGGER wallet_check_send_method
396+
CREATE TRIGGER wallet_check_support
407397
BEFORE INSERT OR UPDATE ON "WalletSendPhoenixd"
408398
FOR EACH ROW
409-
EXECUTE FUNCTION wallet_check_send_method();
399+
EXECUTE FUNCTION wallet_check_support('SEND');
410400

411-
CREATE TRIGGER wallet_check_send_method
401+
CREATE TRIGGER wallet_check_support
412402
BEFORE INSERT OR UPDATE ON "WalletSendBlink"
413403
FOR EACH ROW
414-
EXECUTE FUNCTION wallet_check_send_method();
404+
EXECUTE FUNCTION wallet_check_support('SEND');
415405

416-
CREATE TRIGGER wallet_check_send_method
406+
CREATE TRIGGER wallet_check_support
417407
BEFORE INSERT OR UPDATE ON "WalletSendWebLN"
418408
FOR EACH ROW
419-
EXECUTE FUNCTION wallet_check_send_method();
409+
EXECUTE FUNCTION wallet_check_support('SEND');
420410

421-
CREATE TRIGGER wallet_check_send_method
411+
CREATE TRIGGER wallet_check_support
422412
BEFORE INSERT OR UPDATE ON "WalletSendLNC"
423413
FOR EACH ROW
424-
EXECUTE FUNCTION wallet_check_send_method();
414+
EXECUTE FUNCTION wallet_check_support('SEND');
425415

426-
-- Create triggers for each WalletRecv table
427-
CREATE TRIGGER wallet_check_recv_method
416+
CREATE TRIGGER wallet_check_support
428417
BEFORE INSERT OR UPDATE ON "WalletRecvNWC"
429418
FOR EACH ROW
430-
EXECUTE FUNCTION wallet_check_recv_method();
419+
EXECUTE FUNCTION wallet_check_support('RECEIVE');
431420

432-
CREATE TRIGGER wallet_check_recv_method
421+
CREATE TRIGGER wallet_check_support
433422
BEFORE INSERT OR UPDATE ON "WalletRecvLNbits"
434423
FOR EACH ROW
435-
EXECUTE FUNCTION wallet_check_recv_method();
424+
EXECUTE FUNCTION wallet_check_support('RECEIVE');
436425

437-
CREATE TRIGGER wallet_check_recv_method
426+
CREATE TRIGGER wallet_check_support
438427
BEFORE INSERT OR UPDATE ON "WalletRecvPhoenixd"
439428
FOR EACH ROW
440-
EXECUTE FUNCTION wallet_check_recv_method();
429+
EXECUTE FUNCTION wallet_check_support('RECEIVE');
441430

442-
CREATE TRIGGER wallet_check_recv_method
431+
CREATE TRIGGER wallet_check_support
443432
BEFORE INSERT OR UPDATE ON "WalletRecvBlink"
444433
FOR EACH ROW
445-
EXECUTE FUNCTION wallet_check_recv_method();
434+
EXECUTE FUNCTION wallet_check_support('RECEIVE');
446435

447-
CREATE TRIGGER wallet_check_recv_method
436+
CREATE TRIGGER wallet_check_support
448437
BEFORE INSERT OR UPDATE ON "WalletRecvLightningAddress"
449438
FOR EACH ROW
450-
EXECUTE FUNCTION wallet_check_recv_method();
439+
EXECUTE FUNCTION wallet_check_support('RECEIVE');
451440

452-
CREATE TRIGGER wallet_check_recv_method
441+
CREATE TRIGGER wallet_check_support
453442
BEFORE INSERT OR UPDATE ON "WalletRecvCLNRest"
454443
FOR EACH ROW
455-
EXECUTE FUNCTION wallet_check_recv_method();
444+
EXECUTE FUNCTION wallet_check_support('RECEIVE');
456445

457-
CREATE TRIGGER wallet_check_recv_method
446+
CREATE TRIGGER wallet_check_support
458447
BEFORE INSERT OR UPDATE ON "WalletRecvLNDGRPC"
459448
FOR EACH ROW
460-
EXECUTE FUNCTION wallet_check_recv_method();
449+
EXECUTE FUNCTION wallet_check_support('RECEIVE');

0 commit comments

Comments
 (0)