Add promo code functionality to deposits and enhance wallet routes

This commit is contained in:
2025-12-21 00:41:39 +01:00
parent 3861b4477d
commit 97ed3c4d9e
2 changed files with 100 additions and 5 deletions

View File

@@ -8,15 +8,42 @@ CREATE TABLE IF NOT EXISTS users (
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS promo_codes (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(32) NOT NULL UNIQUE,
bonus_type VARCHAR(16) NOT NULL DEFAULT 'fixed',
bonus_value INT NOT NULL DEFAULT 0,
max_uses INT NULL,
expires_at DATETIME NULL,
active TINYINT(1) NOT NULL DEFAULT 1,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS deposits (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT UNSIGNED NOT NULL,
amount INT NOT NULL,
bonus_amount INT NOT NULL DEFAULT 0,
promo_code_id BIGINT UNSIGNED NULL,
stripe_payment_intent_id VARCHAR(128) NOT NULL,
status VARCHAR(32) NOT NULL DEFAULT 'created',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_deposits_user_id FOREIGN KEY (user_id) REFERENCES users(id)
CONSTRAINT fk_deposits_user_id FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_deposits_promo_code_id FOREIGN KEY (promo_code_id) REFERENCES promo_codes(id)
);
CREATE INDEX idx_deposits_stripe ON deposits (stripe_payment_intent_id);
CREATE TABLE IF NOT EXISTS promo_redemptions (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT UNSIGNED NOT NULL,
promo_code_id BIGINT UNSIGNED NOT NULL,
deposit_id BIGINT UNSIGNED NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_redemptions_user_id FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_redemptions_promo_code_id FOREIGN KEY (promo_code_id) REFERENCES promo_codes(id),
CONSTRAINT fk_redemptions_deposit_id FOREIGN KEY (deposit_id) REFERENCES deposits(id),
UNIQUE KEY uniq_user_promo (user_id, promo_code_id)
);