- Added new models for premium tier configurations and assignments, enabling feature limits for free and premium users. - Introduced GDPR deletion logging and commands for user data management. - Enhanced logging configuration with retention days for audit logs. - Updated bot commands and job processing to include new premium and GDPR functionalities. - Improved localization with new keys for premium features and GDPR commands in both English and German. - Added UI components for managing premium settings and logging retention in the WebUI.
92 lines
2.4 KiB
SQL
92 lines
2.4 KiB
SQL
-- AlterTable
|
|
ALTER TABLE "GuildSettings" ADD COLUMN "snipeEnabled" BOOLEAN NOT NULL DEFAULT false;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "LoggingConfig" ADD COLUMN "retentionDays" INTEGER NOT NULL DEFAULT 90;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PremiumTierConfig" (
|
|
"tier" TEXT NOT NULL,
|
|
"maxTags" INTEGER NOT NULL,
|
|
"maxFeeds" INTEGER NOT NULL,
|
|
"maxBackups" INTEGER NOT NULL,
|
|
"features" JSONB NOT NULL,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "PremiumTierConfig_pkey" PRIMARY KEY ("tier")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "GuildPremiumAssignment" (
|
|
"id" TEXT NOT NULL,
|
|
"guildId" TEXT NOT NULL,
|
|
"tier" TEXT NOT NULL,
|
|
"note" TEXT,
|
|
"assignedById" TEXT NOT NULL,
|
|
"expiresAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "GuildPremiumAssignment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserPremiumAssignment" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"tier" TEXT NOT NULL,
|
|
"note" TEXT,
|
|
"assignedById" TEXT NOT NULL,
|
|
"expiresAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "UserPremiumAssignment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "GdprDeletionLog" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"guildId" TEXT,
|
|
"summary" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "GdprDeletionLog_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "GuildPremiumAssignment_guildId_key" ON "GuildPremiumAssignment"("guildId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "GuildPremiumAssignment_tier_idx" ON "GuildPremiumAssignment"("tier");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UserPremiumAssignment_userId_key" ON "UserPremiumAssignment"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UserPremiumAssignment_tier_idx" ON "UserPremiumAssignment"("tier");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "GdprDeletionLog_userId_createdAt_idx" ON "GdprDeletionLog"("userId", "createdAt");
|
|
|
|
-- Seed default tier configs
|
|
INSERT INTO "PremiumTierConfig" ("tier", "maxTags", "maxFeeds", "maxBackups", "features", "updatedAt")
|
|
VALUES
|
|
(
|
|
'FREE',
|
|
15,
|
|
3,
|
|
2,
|
|
'{"tags":true,"feeds":true,"guildbackup":true}'::jsonb,
|
|
CURRENT_TIMESTAMP
|
|
),
|
|
(
|
|
'PREMIUM',
|
|
100,
|
|
25,
|
|
25,
|
|
'{"tags":true,"feeds":true,"guildbackup":true}'::jsonb,
|
|
CURRENT_TIMESTAMP
|
|
);
|