feat(go): referral support (#28345)
Co-authored-by: Jack <jack@anoma.ly>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
CREATE TABLE `referral_code` (
|
||||
`id` varchar(30) NOT NULL,
|
||||
`workspace_id` varchar(30) NOT NULL,
|
||||
`time_created` timestamp(3) NOT NULL DEFAULT (now()),
|
||||
`time_updated` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
`time_deleted` timestamp(3),
|
||||
`code` varchar(10) NOT NULL,
|
||||
CONSTRAINT PRIMARY KEY(`workspace_id`,`id`),
|
||||
CONSTRAINT `referral_code_workspace_id` UNIQUE INDEX(`workspace_id`),
|
||||
CONSTRAINT `referral_code_code` UNIQUE INDEX(`code`)
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `referral_reward` (
|
||||
`id` varchar(30) NOT NULL,
|
||||
`workspace_id` varchar(30) NOT NULL,
|
||||
`time_created` timestamp(3) NOT NULL DEFAULT (now()),
|
||||
`time_updated` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
`time_deleted` timestamp(3),
|
||||
`referral_id` varchar(30) NOT NULL,
|
||||
`source` enum('inviter','invitee') NOT NULL,
|
||||
`amount` bigint NOT NULL,
|
||||
`applied_by_user_id` varchar(30),
|
||||
`time_applied` timestamp(3),
|
||||
CONSTRAINT PRIMARY KEY(`workspace_id`,`id`),
|
||||
CONSTRAINT `referral_reward_referral_source` UNIQUE INDEX(`referral_id`,`source`)
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `referral` (
|
||||
`id` varchar(30) NOT NULL,
|
||||
`workspace_id` varchar(30) NOT NULL,
|
||||
`time_created` timestamp(3) NOT NULL DEFAULT (now()),
|
||||
`time_updated` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
`time_deleted` timestamp(3),
|
||||
`inviter_workspace_id` varchar(30) NOT NULL,
|
||||
`invitee_account_id` varchar(30) NOT NULL,
|
||||
`invitee_user_id` varchar(30) NOT NULL,
|
||||
`referral_code_id` varchar(30) NOT NULL,
|
||||
`stripe_customer_id` varchar(255) NOT NULL,
|
||||
`stripe_subscription_id` varchar(255) NOT NULL,
|
||||
CONSTRAINT PRIMARY KEY(`workspace_id`,`id`),
|
||||
CONSTRAINT `referral_invitee_account_id` UNIQUE INDEX(`invitee_account_id`),
|
||||
CONSTRAINT `referral_stripe_subscription_id` UNIQUE INDEX(`stripe_subscription_id`)
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX `referral_reward_workspace_time` ON `referral_reward` (`workspace_id`,`time_created`);--> statement-breakpoint
|
||||
CREATE INDEX `referral_inviter_workspace_id` ON `referral` (`inviter_workspace_id`);--> statement-breakpoint
|
||||
CREATE INDEX `referral_code_id` ON `referral` (`referral_code_id`);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
||||
DROP TABLE `referral_code`;--> statement-breakpoint
|
||||
DROP INDEX `referral_reward_referral_source` ON `referral_reward`;--> statement-breakpoint
|
||||
DROP INDEX `referral_stripe_subscription_id` ON `referral`;--> statement-breakpoint
|
||||
DROP INDEX `referral_inviter_workspace_id` ON `referral`;--> statement-breakpoint
|
||||
DROP INDEX `referral_code_id` ON `referral`;--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` DROP PRIMARY KEY;--> statement-breakpoint
|
||||
ALTER TABLE `referral` DROP PRIMARY KEY;--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` MODIFY COLUMN `workspace_id` varchar(30);--> statement-breakpoint
|
||||
ALTER TABLE `workspace` ADD `referral_code` varchar(16);--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` ADD PRIMARY KEY (`id`);--> statement-breakpoint
|
||||
ALTER TABLE `referral` ADD PRIMARY KEY (`id`);--> statement-breakpoint
|
||||
CREATE INDEX `referral_workspace_id` ON `referral` (`workspace_id`);--> statement-breakpoint
|
||||
CREATE UNIQUE INDEX `workspace_referral_code` ON `workspace` (`referral_code`);--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` DROP COLUMN `source`;--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` DROP COLUMN `applied_by_user_id`;--> statement-breakpoint
|
||||
ALTER TABLE `referral` DROP COLUMN `inviter_workspace_id`;--> statement-breakpoint
|
||||
ALTER TABLE `referral` DROP COLUMN `invitee_user_id`;--> statement-breakpoint
|
||||
ALTER TABLE `referral` DROP COLUMN `referral_code_id`;--> statement-breakpoint
|
||||
ALTER TABLE `referral` DROP COLUMN `stripe_customer_id`;--> statement-breakpoint
|
||||
ALTER TABLE `referral` DROP COLUMN `stripe_subscription_id`;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
DROP INDEX `referral_reward_workspace_time` ON `referral_reward`;--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` DROP PRIMARY KEY;--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` ADD PRIMARY KEY (`workspace_id`,`referral_id`);--> statement-breakpoint
|
||||
ALTER TABLE `referral_reward` DROP COLUMN `id`;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
||||
DROP INDEX `referral_workspace_id` ON `referral`;--> statement-breakpoint
|
||||
ALTER TABLE `referral` DROP PRIMARY KEY;--> statement-breakpoint
|
||||
ALTER TABLE `referral` ADD PRIMARY KEY (`workspace_id`,`id`);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
UPDATE `workspace` SET `referral_code` = NULL WHERE CHAR_LENGTH(`referral_code`) > 10;--> statement-breakpoint
|
||||
ALTER TABLE `workspace` MODIFY COLUMN `referral_code` varchar(10);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
DROP INDEX `workspace_referral_code` ON `workspace`;--> statement-breakpoint
|
||||
CREATE UNIQUE INDEX `referral_code` ON `workspace` (`referral_code`);
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user