-- +migrate Up
CREATE TABLE `donation_flows` (
                                  `id`              BIGINT PRIMARY KEY AUTO_INCREMENT,
                                  `campaign_id`     BIGINT NOT NULL,
                                  `user_id`         BIGINT NULL,
                                  `source_type`     VARCHAR(50) NOT NULL, -- e.g., "affiliate", "app", "qr", "sms"
                                  `source_name`     VARCHAR(100) NOT NULL, -- e.g., "instagram", "donate_app"
                                  `referral_code`   VARCHAR(100),
                                  `link`            VARCHAR(255) NOT NULL,
                                  `clicks`          BIGINT DEFAULT 0,
                                  `conversions`     BIGINT DEFAULT 0,
                                  `donations_total` DECIMAL(15,2) DEFAULT 0.00,
                                  `created_at`      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

                                  FOREIGN KEY (`campaign_id`)
                                      REFERENCES `campaigns`(`id`)
                                      ON DELETE CASCADE,

                                  FOREIGN KEY (`user_id`)
                                      REFERENCES `users`(`id`)
                                      ON DELETE SET NULL
);

CREATE INDEX `idx_flow_campaign_id` ON `donation_flows`(`campaign_id`);
CREATE INDEX `idx_flow_source` ON `donation_flows`(`source_type`, `source_name`);

-- +migrate Down
DROP TABLE IF EXISTS `donation_flows`;
